У меня есть код HTML, который создает три значка jQuery:
<span class="ui-icon ui-icon-circle-close one-click" data-customer-id="1"></span>
<span class="ui-icon ui-icon-circle-close one-click" data-customer-id="2"></span>
<span class="ui-icon ui-icon-circle-close one-click" data-customer-id="3"></span>
И некоторый код JavaScript jQuery, который я хочу запустить один раз на один значок, который щелкнут. Он отлично работает, когда я использую это:
$(".one-click").one("click", function() { alert(this.dataset.customerId) } );
Однако, когда я пытаюсь использовать одну из своих функций, он запускается только для первого щелчка. Он никогда не срабатывает при нажатии на другой значок в первый раз:
$(".one-click").one("click", function() { my_custom_function(this.dataset.customerId) } );
Он отлично работает для первого щелчка, который щелкнут, но не срабатывает для других значков, которые были нажаты. Документация jQuery говорит, что она должна срабатывать один раз для каждого элемента для типа события. Что мне не хватает? my_custom_function
должен выполняться для каждого my_custom_function
элемента...
Редактировать:
Я должен подробно рассказать о my_custom_function
. Он фактически перезагружает промежутки с веб-сервера. В частности, они заключены в div:
<div id="my_div">
<span class="ui-icon ui-icon-circle-close one-click" data-customer-id="1"></span>
<span class="ui-icon ui-icon-circle-close one-click" data-customer-id="2"></span>
<span class="ui-icon ui-icon-circle-close one-click" data-customer-id="3"></span>
</div>
... и где-то внутри my_custom_function перезагружаюсь с помощью $("#my_div").load("/some_url/")
. После комментирования этой линии нагрузки функции, похоже, срабатывают правильно. Как я могу применить функции однократного запуска после load()
? Вызов one()
на элементы снова не кажется трюком.
взглянуть:
<span class="ui-icon ui-icon-circle-close one-click" data-customer-id="1">s1</span>
<span class="ui-icon ui-icon-circle-close one-click" data-customer-id="2">s2</span>
<span class="ui-icon ui-icon-circle-close one-click" data-customer-id="3">s3</span>
$(document).ready(function(){
function my_custom_function(cust_id) {
alert(cust_id);
}
$(".one-click").one("click", function() {
my_custom_function(this.dataset.customerId);
});
});
Перепишите его как:
$(".one-click").one("click", my_custom_function),
или структурировать его как вызываемую функцию следующим образом: http://jsfiddle.net/scott_in_ct/QbpC8/
my_custom_function
. Еще лучше создать jsfiddle, демонстрирующий проблему.my_custom_function()
? ты уверен, что он не работает? вы можетеconsole.log()
илиalert()
в этом? Есть ли ошибки в консоли?