2009-08-26 12 views
1

Im Moment benutze ich jQuery, um alle tds mit dem Edit Link zu verbinden, aber ich möchte nur die tds mit der Klasse bearbeiten können, und ich brauche den Link, um das a Tag mit der Klasse edit- zu finden. Aktion.Jquery td click

Jede Hilfe wäre großartig!

Aktuelle Code:

$("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> 

Antwort

4

Verwenden .live, besser als Hunderte von separaten Klick-Ereignissen mit.

Beachten Sie auch, dass Sie einen Benutzer nicht emulieren können, indem Sie auf einen Anker klicken, um beispielsweise eine neue Seite zu öffnen, aber es wird ein Skript-Klick-Handler auf dem Anker ausgeführt.

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

Dank hat einen Charme! Ich bin ziemlich neu zu jquery, also danke für die Hilfe. –

+0

'.live()' ist das neue Javascript. +1! – JorenB

+0

.on() ist das neue Live()! –

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

Ändern Sie Ihren ersten Selektor, um nur die Zellen auszuwählen, die über die Bearbeitungsklasse verfügen.

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

Außerdem sollen Sie in der Lage der ‚klicken‘ Zustandsvariablen, um loszuwerden, wenn Sie eine separate Funktion Handler für Click-Ereignisse erstellen. Z.B.

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

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

EDIT

darüber nachzudenken etwas mehr, Verwendung Ereignis Delegation.

$('#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

vielen Dank für Ihre Hilfe jetzt alles sortiert. Das erste Mal habe ich diese Seite benutzt, um selbst eine Frage zu stellen und das Feedback war großartig. Prost! –