Javascript 如何判断模块(下拉列表、复选框等)是否已绑定?

Javascript 如何判断模块(下拉列表、复选框等)是否已绑定?,javascript,jquery,semantic-ui,Javascript,Jquery,Semantic Ui,在语义UI中,如何判断给定的.UI.dropdown是否已初始化为下拉列表(使用$(.UI.dropdown).dropdown(…)) 我这样问是因为我想定义一个“回退”,用默认参数初始化任何未初始化的下拉列表(或复选框,或其他绑定JavaScript的模块)。然而,两次初始化它们通常会产生奇怪的行为 例如: $('.ui.dropdown.special').dropdown({ action: somethingSpecial() }); // Later... $('.ui.drop

在语义UI中,如何判断给定的
.UI.dropdown
是否已初始化为下拉列表(使用
$(.UI.dropdown).dropdown(…)

我这样问是因为我想定义一个“回退”,用默认参数初始化任何未初始化的下拉列表(或复选框,或其他绑定JavaScript的模块)。然而,两次初始化它们通常会产生奇怪的行为

例如:

$('.ui.dropdown.special').dropdown({ action: somethingSpecial() });

// Later...

$('.ui.dropdown').each(function()
{
    if (/* $(this) is not already a dropdown */)
    {
        $(this).dropdown();
    }
});

到目前为止,我找到的唯一解决方法是手动添加属性并检查它:

$.fn.safeDropdown = function(args)
{
    $dropdown = $(this);

    if (!$dropdown.is('[data-semantic]'))
    {
        $dropdown.attr('data-semantic', 'dropdown');
        $dropdown.dropdown(args);
    }
};

但这不太理想,因为它需要更改所有现有代码,而且打字时间较长。

元素上附加了一个隐藏的数据变量,格式为
module-
,我们可以使用它来检查元素是否初始化。例如:
$(elem).data('module-dropdown')