0

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

问题

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

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

警报被调用两次。

在这里提琴

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

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

  • 最初的 html/script 就像这里的小提琴一样,它在这里创建了两个下拉列表,(尽管它们似乎不相关)我用代码创建<select>...</select>的一个和 dropkick.js 用class=dk_container dk_theme_default类创建的一个。所以我评论了这个 html 以避免这种情况(在第一个小提琴中),但它似乎仍然存在 2 个选择下拉菜单!
4

2 回答 2

2

我想我发现了问题:

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

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

在此处注释第一行

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

并尝试。“警报被叫了两次。” 这将得到修复。

于 2014-08-27T08:27:57.017 回答
1

您可能应该简单地使用dropkick的文档化 API

$(function () {
    $('.default').dropkick({
        change: function () {
            alert("You selected " + $(this).val() + " for " + this.id + ".");
        }
    });
});
于 2014-08-27T08:52:55.987 回答