2014-09-05 21 views
0

我有一個小部件,它的工作原理與選擇器(但不是真正的)很相似。我使用event.stopPropagation()來控制包含元素的下拉列表,但問題是,當頁面上有多個元素時 - 我可以同時打開多個下拉列表。jquery,widget控件的event.stopPropagation

是否有任何可能的方法來解決這個問題?

的jsfiddle:http://jsfiddle.net/Ls9gas2h/

控制的點擊是在76至88行:

this.clicktarget.on('click', function (event) { 
      if (source.options.allfields) { 
       if (!$(event.target).hasClass('deadfield')) { 
        event.stopPropagation(); 
        source._open($(event.target)); 
        source._runcheck(); 
       } 
      } else { 
       event.stopPropagation(); 
       source._open($(event.target)); 
       source._runcheck(); 
      } 
     }); 

回答

1

只是隱藏所有下拉列表開幕前點擊一個:

this.clicktarget.on('click', function (event) { 
    $(".multiple-selector-table").hide(); 
    ... other you code 

Fiddle

已更新。另一種選擇:

您可以使用下面的代碼來觸發_close每個下拉元素:

this.clicktarget.on('click', function (event) { 
    $(window).click(); 

Fiddle

+0

不是最好的方式,小部件邏輯不能跟隨受控元素之外。 – Dazvolt 2014-09-05 09:02:24

+0

@Dazvolt好吧,你可以通知所有元素,他們應該使用更新後的代碼來關閉......一般來說,只能通知所有元素,或者保留所有元素的列表併爲每個元素調用'_close'。 – Regent 2014-09-05 09:36:40

+0

非常感謝,這正是我需要的。 – Dazvolt 2014-09-05 09:47:39