JQuery один не стреляет за элемент

0

У меня есть код 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() на элементы снова не кажется трюком.

  • 0
    Вам нужно будет опубликовать определение my_custom_function . Еще лучше создать jsfiddle, демонстрирующий проблему.
  • 0
    что находится в my_custom_function() ? ты уверен, что он не работает? вы можете console.log() или alert() в этом? Есть ли ошибки в консоли?
Показать ещё 4 комментария
Теги:

2 ответа

1

взглянуть:

<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);
    });
});

http://jsfiddle.net/F7Kdy/5/

0

Перепишите его как:

$(".one-click").one("click", my_custom_function), 

или структурировать его как вызываемую функцию следующим образом: http://jsfiddle.net/scott_in_ct/QbpC8/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню