2009-08-26 7 views
1

Actuellement, j'utilise jquery pour lier tous les td au lien d'édition, mais je ne veux pouvoir cibler que les td avec la classe d'édition, et j'ai besoin du lien pour trouver l'étiquette avec l'édition de classe. action.Jquery td cliquez sur

Toute aide serait géniale!

Code actuel:

$("tr.edit").click(function(){ 
    if(!clicking) 
    { 
     clicking = true; 
     $('a.edit-action', this).click(); 
     clicking = false; 
    } 
}); 



<table align="center" width="100%" id="Table" > 
    <tr> 
     <th width="20%">col 1</th> 
     <th width="20%">col 1</th> 
     <th width="25%">col 1</th> 
     <th width="25%">col 1</th> 
     <th width="10%">col 1</th> 
    </tr> 
    <tr class="edit"> 
     <td width="20%" class="edit">name</td> 
     <td width="20%" class="edit">type</td> 
     <td width="25%">other 1</td> 
     <td width="25%">other 2</td> 
     <td width="10%" class="action"><a href="#" class="dialog edit-action">Edit</a><br>Another delete link here</td> 

    </tr> 
</table> 

Répondre

4

Utilisez .live, mieux que d'avoir des centaines d'événements de clic séparés.

Notez également que vous ne pouvez pas émuler un utilisateur cliquez sur une ancre pour ouvrir une nouvelle page par exemple, mais il exécutera n'importe quel gestionnaire de clic de script sur l'ancre.

$("td.edit").live('click', function(){ 
     $(this).parent().find('a.edit-action').bla 
}); 
+0

Merci a travaillé un charme! Im assez nouveau à jquery alors merci pour l'aide. –

+0

'.live()' est le nouveau Javascript. +1! – JorenB

+0

.on() est le nouveau live()! –

0
$("tr .edit").click(function(){ 
     if(!clicking) 
     { 
       clicking = true; 
       $(this).find(".edit-action").click(); 
       clicking = false; 
     } 
}); 
1

Modifiez votre premier sélecteur pour sélectionner uniquement les cellules qui ont une classe d'édition.

$("td.edit").click(function(){ 
     if(!clicking) 
     { 
       clicking = true; 
       $('a.edit-action', this).click(); 
       clicking = false; 
     } 
}); 

En outre, vous devriez être en mesure de se débarrasser de la variable d'état « clic » si vous créez un gestionnaire de fonctions pour d'autres événements de clic. Par exemple.

$('a.edit-action').click(editActionLinkClicked); 

$("td.edit").click(editActionLinkClicked); 

EDIT

En y repensant un peu plus, la délégation d'événements d'utilisation.

$('#table').click(//Fired when user clicks any element on the table 
    function() 
    { 
     if($(this).hasClass('edit-action') || $(this).hasClass('edit')) 
     { 
      //Your click event logic. 
      //You don't have to keep track of state or anything. 
     } 
    } 
); 
+0

merci beaucoup pour votre aide im tout maintenant triés. La première fois que j'utilisais ce site pour publier une réponse moi-même et les commentaires étaient super. à votre santé! –