2010-02-07 7 views
0
<table> 
... 
</table> 

<script type="text/javascript"> 
$(selecctor).click(...) 
</script> 

Ce qui précède doit être chargé dynamiquement par ajax.Comment restreindre la plage affectée avec jQuery?

Ce que je veux faire est de limiter la selector de sorte qu'il ne touche que les DOM dans le table ci-dessus it.I (ne peut pas attribuer un id au table)

EDIT

Pour la solution de Gumbo:

<div id="container"> 
</div> 
<table> 
.. 
</table> 

Je pense que pour le code html ci-dessus, il échouera, car $('table:last') n'est pas la nouvelle chargé table, mais le table après container

Répondre

1

Vous pouvez pass a context element avec le second paramètre:

$("selector", $("table")).click(...) 

Ensuite, le sélecteur est évalué en fonction de ce contexte.


Modifier Essayez table:last pour sélectionner le dernier nœud ajouté:

$("selector", $("table:last")).click(...) 

Cela devrait fonctionner comme seuls les nœuds jusqu'à l'élément SCRIPT sont déjà ajoutés au DOM. Mais cela ne fonctionne que si vous appelez $ directement et non via $.ready ou $(document).ready.

+0

'$ (" table ")' n'est pas suffisant pour restreindre la plage affectée. – user198729

+0

@ user198729: Alors, comment pouvez-vous identifier cette table particulière hors contexte? – Gumbo

+0

Je ne sais pas.Je suppose que certains gars magiques peuvent savoir :) – user198729

0

Ajoutez une classe à la table.

<table class="myUniqueClass">...</table> 

$(".myUniqueClass").click(...); 
+0

La 'table' peut être chargée plusieurs fois, chaque fois remplie avec des données différentes. – user198729

+0

Et ... si vous expliquez un peu plus sur ce que vous faites, vous pourriez obtenir l'aide dont vous avez besoin. – Andrew

+0

C'est le commentaire @pixeline. – user198729

1

Vous devez montrer le html entier chargé via ajax, ainsi que le code html qui recevra le contenu chargé.

Mais, que vous chargez cette table dans un div # myCONTENT et en supposant qu'il n'y aura qu'un seul tableau:

$('#mycontent table:first').click(); 

Ou mieux, en supposant que devriez appeler votre javascript dans le rappel ajax et séparer les js et le code HTML

$('#mycontent').load('file.php',function(data){ 
var selector = $('table',data).eq(0); 
}); 
+0

Cette façon fonctionnera certainement.Cependant, je veux que cela soit possible tout ce que j'ai à faire est '$ ('container'). load ('file.php')' .Les écouteurs sont ajoutés dans 'file.php' – user198729

+0

bien, je suis désolé de vous dire ceci: n'est pas * moyen fiable * de faire ce que vous demandez.Pourquoi gardez-vous ces mauvaises contraintes (ne pas séparer le code et le comportement, ne pas donner un ID ou une classe à votre table)? Pourquoi utiliser jquery si vous ne l'utilisez pas la façon dont il devrait être utilisé? – pixeline

Questions connexes