2014-11-06 2 views
1

У меня есть таблица, где первый столбец каждой строки содержит несколько иконок, каждая из которых внутри элемента:.click JQuery (в) событие перестал работать

<a title="[email protected]" class="delete" href="#" data-toggle="modal" data-target="#dialogDeleteUser"> 
    <img alt="delete" src="/recursos/imagenes/iconPapelera.png"> 
</a> 

И у меня есть функция JQuery, которые должны вызвать, когда что нажата ссылка:

$(document).ready(function(){ 
    $("a.delete").click(function() { 
     var userEmail = $(this).attr("title"); 
     loadUserDelete(userEmail); 
    }); 

Дело в том, что он работал в течение некоторого времени, вправо, пока я не начал загрузку содержимого таблицы с помощью TableSorter пейджера виджет и через Ajax.

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

+1

Существует неожиданный конец ввода error..Are Вы уверены, что йо закрыли '});' –

+1

Пожалуйста, убедитесь, что вы закрыли функцию готовности документа. –

ответ

4

Новый контент добавлен после ваш код подключение к запуску событий не будет волшебным знанием для повторного запуска этого кода для установки обработчиков на новые элементы. Вы можете использовать делегированные обработку вместо:

$("selector for the container of these").on("click", "a.delete", function() { 
    var userEmail = $(this).attr("title"); 
    loadUserDelete(userEmail); 
}); 

Теперь click подключен к контейнеру все эти ссылки находятся в JQuery будет вызывать обработчик, если щелчок проходит через a.delete элемент пути к контейнеру во время барботирования. ,

5

Если вы зарегистрируете непосредственный прослушиватель событий так, как только он загрузится, загруженные элементы не будут привязаны к обработчику. Вы можете преодолеть это, используя делегированные события, где вы связывающиеся слушателя к родительскому элементу, который уже присутствует, когда обработчик события зарегистрирован:

$('#parent').on('click', 'a.delete', function(){ 
... 
}): 

См jQuery's documentation for on()

0

Существует неожиданный конец ввода error..Are Вы уверены, что года закрыли $(document).ready функцию

$(document).ready(function(){ 
     $("a.delete").click(function() { 
      var userEmail = $(this).attr("title"); 
      loadUserDelete(userEmail); 
     }); 
    }); 
+0

Не поймал это. Хотя это, вероятно, просто ошибка с копированием, но на самом деле это не происходит в его коде (вы ошиблись) +1 для вас, чтобы определить его :) – TheProvost

2

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

$(document).on("click","a.delete",function() { 
     var userEmail = $(this).attr("title"); 
     loadUserDelete(userEmail); 
    }); 
1

Вы должны добавить событие щелчка на родительском элементе управления, как это:

$("#parentControl").on("click", "a.delete", function() { 
    var userEmail = $(this).attr("title"); 
    loadUserDelete(userEmail); 
}); 
0

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

var that = $(this); 

that.click(function() { 
    ... 
}); 
Смежные вопросы