Javascript 如何判断模块(下拉列表、复选框等)是否已绑定?
在语义UI中,如何判断给定的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.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')