Как предотвратить неоднократное связывание событий
$('.ajax').click
(
function()
{
// If been bound then we need to return here.
alert(':D');
}
)
$('.ajax').click
(
function()
{
// If been bound then we need to return here.
alert(':D');
}
)
В этом случае я назвал дубликат кода. Как определить, связано ли событие с тем, чтобы предотвратить запуск двух предупреждающих ящиков?
Ответы
Ответ 1
Там действительно хороший способ сделать это в jQuery.
Вот пример.
function alertEvent() {
alert(":D");
}
$(".ajax").bind("click", alertEvent);
//When you want to ensure it won't happen twice...
$(".ajax").unbind("click", alertEvent);
$(".ajax").bind("click", alertEvent);
Этот метод удалит только указанное событие, что делает его идеальным для того, что вы хотите сделать.
Ответ 2
Если вы используете jQuery >= 1.7, вы можете использовать API .on()/.off()
в сочетании с пространством имен событий. В этом примере .off()
вызывается немедленно, чтобы гарантировать, что предыдущие события (любого рода) с пространством имен не связаны:
$("form")
.off(".validator")
.on("keypress.validator", "input[type='text']", validate);
Это довольно гибкий API, поэтому вы можете быть очень конкретным, если вам нужно:
$("form")
.off("keypress.validator", "input[type='text']", validate)
.on("keypress.validator", "input[type='text']", validate);
Документы:
http://api.jquery.com/off/
Ответ 3
попробуйте отвязать его перед привязкой:
$(".ajax").unbind("click").click(
function () {
alert("Hello");
} );
прочитайте этот для получения дополнительной информации.
Ответ 4
function demo()
{
// your code here which will called on click event
}
$(document).ready(function(){
$('.add').bind('click',demo);
});
//After successfully ajax call response
//Unbind the click event first
$('.add').unbind('click',demo);
//Then again bind the event
$('.add').bind('click',demo);
Ответ 5
Простейшее решение отсюда связать событие только один раз
Скопированный пример кода:
function someMethod()
{
$(obj).off('click').on('click', function(e) {
// put your logic in here
});
}