我在jquery中構建了一個級聯下拉列表,從幾個示例進行了修改。我添加了一項功能讓用戶「備份」並重新選擇較早的下拉菜單。這將重新加載下一個下拉列表,並清除並禁用後面的下拉列表。級聯下拉列表 - 如何暫時禁用更改事件在下拉操作選項
http://jsfiddle.net/goodeye/gA6GZ/
的問題是第一次通過,選擇元素的變化事件綁定後,所以我想重裝新的價值觀是造成後來改變事件射擊。
我分開了.change()綁定,而不是鏈接它。我在加載選擇選項之前先將它鏈接起來。這有助於第一次通過,但不是隨後的時間。
對於這個問題,我專門找了一個好方法,這個順序:
- 避免變化()
- 更新的下拉菜單
- 設置變化()
此問題: Best way to remove an event handler in jQuery? 以unbind()作爲主要答案,然後使用live()的後續答案。 live()方法使用了一個讓我感到困惑的類,並沒有得到多少選票。
要重現:
請選擇步驟1,請參閱第2步驟。
選擇第2步,請參閱第3步驟。
再次選擇第1步,請參閱第2步驟。
然後麻煩開始:
選擇第2步,見第3步啓動兩次。
選擇第3步,參見第4步打3次。
再次選擇步驟1,請參閱步驟2激發兩次。
等
它甚至變得更糟;我會看到第三步射擊五次。
一些細節:
在真正的代碼,從一個JSON Ajax調用這些負載。我從示例中刪除了它,並添加了硬編碼選項來模擬它,並將其作爲事件問題的範圍。
這從服務器端開始,所以第一個下拉菜單已經在html中。接下來的三個是從(模擬的)json調用中加載的。
這些使用類進行標識,因爲真實頁面具有多個這些下拉列表的集合。代碼使用$(this)小心地在所選的一個集合內工作。
如果只有一個選項,還有一個功能是「自動選擇」,然後轉到下一個選項。這段代碼就在那裏,但模擬的例子都有不止一個選項,以避免這個問題。
在此先感謝您的想法!
現在我不確定它是否更新導致多個調用的選項,或者是因爲我多次調用change();每次通過序列。再次調用change()是否會導致它多次觸發? ...或者那也是另一個問題。 – goodeye