2009-08-26 8 views
1

В настоящее время я использую jquery, чтобы связать все td с ссылкой на редактирование, но я хочу, чтобы иметь возможность нацеливать td на класс редактирования, и мне нужна ссылка, чтобы найти тег с классом edit- действие.JQuery td click

Любая помощь будет замечательной!

Текущий код:

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

ответ

4

Использование .live, лучше, чем сотни отдельных событий щелчка.

Также обратите внимание, что вы не можете эмулировать пользователя, щелкнув по якорю, чтобы открыть новую страницу, например, но он запустит любой обработчик кликов скрипта на якоре.

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

Спасибо, сработало очарование! im довольно новый для jquery, поэтому спасибо за помощь. – 2009-08-26 20:20:29

+0

'.live()' - новый Javascript. +1! – JorenB

+0

.on() - новый живой()! –

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

Измените свой первый селектор, чтобы выбрать только те ячейки, которые имеют класс редактирования.

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

Кроме того, вы должны быть в состоянии избавиться от переменного состояния «щелчок», если создать отдельную функцию обработчик событий щелчка. Например.

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

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

EDIT

Думая об этом немного больше, делегирование использование событий.

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

Большое спасибо за вашу помощь im все отсортировано сейчас. В первый раз ive использовал этот сайт, чтобы опубликовать quetion сам и обратная связь была отличной. ура! – 2009-08-26 20:24:26

Смежные вопросы