JQuery тд нажмите - PullRequest
       1

JQuery тд нажмите

1 голос
/ 27 августа 2009

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

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

Текущий код:

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

Ответы [ 3 ]

4 голосов
/ 27 августа 2009

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

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

$("td.edit").live('click', function(){
        $(this).parent().find('a.edit-action').bla
});
1 голос
/ 27 августа 2009

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

$("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 голосов
/ 27 августа 2009
$("tr .edit").click(function(){
        if(!clicking)
        {
                clicking = true;
                $(this).find(".edit-action").click();
                clicking = false;
        }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...