Вопрос:

Jquery click bind не работает во второй раз

jquery click bind href

4243 просмотра

1 ответ

15 Репутация автора

у меня странное поведение с aи с imgтегом внутри.

У меня есть страница php с таблицей, которая представляет собой список записей. В конце каждой строки у меня есть кнопка для удаления строки.

Это код моей таблицы:

<div class='edit' >
    <a id='20' href='#' return;>
        <img src='images/edit.png'  />
    </a>
</div>

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

Мой код скрипта:

$("#delete a").click(function(e) {

e.preventDefault();

$('#action').val("delete");
$('#keyAction').val(this.id);

$.ajax({
        type: "POST",
        url: "processAttivita.php",
        data: $("#attivita_form").serialize(),
        error: function(msg) {
            $("#errore").html(msg);
        },
        success: function(msg) {
            // display the errors returned by server side validation (if any)
            ricaricaLista();                

        }
    });     

 // end click delete event  
 });

Первая строка, которую я пытаюсь удалить, нажав на изображение, работает нормально. Во втором случае кажется, что jquery не связывает событие «щелчка», и aвозникает href элемента по умолчанию , который остается на той же странице из-за «#» в атрибуте href.

Есть идеи, почему второй раз jquery не перехватывает щелчок по <a>элементу?

Автор: fabribs Источник Размещён: 07.02.2013 11:10

Ответы (1)


5 плюса

10661 Репутация автора

Решение

Вы используете селектор идентификатора, #delete aкоторый будет соответствовать только одному (обычно первому) элементу.

Попробуйте использовать класс, например .delete a.

Причина, по которой вы получаете только один элемент, заключается в том, что JQuery оптимизирует любой селектор, который начинается с #проходов до document.getElementById, который возвращает только 1 элемент.

Вот пример того, как использовать делегирование событий для достижения того же:

$("#tableid").click(".delete a", function(e) {
    // your code
});

Ваш html должен иметь идентификатор на вашей таблице и давать class="delete"контейнер ваших ссылок для удаления.

Автор: Plynx Размещён: 07.02.2013 11:15
Вопросы из категории :
32x32