Javascript这个范围问题

时间:2018-10-28 17:01:31

标签: javascript jquery

我做了两个下拉菜单,但是每个选择都会影响另一个

matIconRegistry

我已将它们的范围设置为var dd = new DropDown( $('.f-box') );,但它不能识别唯一元素,但会影响所有匹配的选项。

this

看起来 DropDown.prototype = { initEvents : function() { var obj = this; obj.dd.on('click', function(event){ $(this).toggleClass('active'); return false; }); obj.opts.on('click',function(){ var opt = $(this); obj.val = opt.text(); obj.index = opt.index(); obj.placeholder.text(obj.val); }); } } 正在匹配所有obj.opts.on('click',function(){}元素,而不是当前正在单击的元素。我将其分配给.f-box的方式不正确吗?

http://jsfiddle.net/42dbqugj/

1 个答案:

答案 0 :(得分:1)

问题是因为您要向.f-box函数提供所有Dropdown()元素,因此它对所有元素都起作用。

解决此问题的快速方法是遍历.f-box并分别调用它们上的函数:

$('.f-box').each(function() {
  new DropDown($(this));
});

Updated fiddle

但是,完全更好的方法是将这种逻辑更改为jQuery插件。然后,标准模式将分别处理每个元素。