jquery事件被调用了两次 - dropkick.js

时间:2014-08-27 07:50:53

标签: javascript jquery jquery-dropkick

所以我有一个问题,我有一个下拉列表,然后我使用dropkick.js创建它。 (我只是在学习dropkick.js所以我现在认为我误解了一些东西。)

问题

当我绑定一个像这样的on change事件时

$('.pizza_size').on('change', 'select[name=pizza_size]', function() {
    alert(this.value);
});

警报被调用两次。

Fiddle here

我最初的问题是选择下拉列表是动态更改的,因此$(".default").dropkick();不再适用,所以我在上面创建了这个动态选择器。 (如果有更好的方法动态绑定调用,请告诉我们!:D)

有用的信息: (基于我的一些调试)

  • 最初的html /脚本就像这个fiddle here,它创建了两个下拉列表,(虽然它们似乎没有相关性)我使用代码<select>...</select>创建的那个一个dropkick.js使用class=dk_container dk_theme_default类创建。所以我评论这个html以避免这个(在第一个小提琴中),但它似乎仍然存在2个选择下拉列表!

2 个答案:

答案 0 :(得分:2)

我想我发现了这个问题:

在你的dropkick.js插件中,你有两次选择触发。 在插件中搜索这些行

$select.trigger('change');
$select.val(value).trigger('change');

在这里评论第一行

$select.trigger('change'); // comment this line in your dropkick.js file

然后试试。 &#34;警报被调用两次。&#34;这将是固定的。

答案 1 :(得分:1)

您可能只需使用the documented API的dropkick。

$(function () {
    $('.default').dropkick({
        change: function () {
            alert("You selected " + $(this).val() + " for " + this.id + ".");
        }
    });
});