2010-11-23 102 views
3

我在我的網頁上有一個下拉列表,附帶一個jQuery事件附加到change事件。在更改時,我使用ajax在彈出窗口中加載部分視圖。如何防止給定事件下拉列表上的jQuery事件觸發

當用戶使用鍵盤瀏覽項目列表,然後單擊頁面另一部分的鏈接時,我會立即看到我的彈出窗口。當用戶點擊頁面其他地方的鏈接時,顯然會發生這種情況,首先在下拉菜單中觸發更改事件。

是否有任何整潔的解決方案來解決這個問題?一個簡單的解決方案是在keyup上觸發事件,但我不希望發生這種功能。

這裏的代碼更改事件片段,因爲變化事件在任何情況下解僱

$('#lookup').change(function() 
{ 
    $.get(..//load template 

回答

0

沒有找到我喜歡或用我的風格乾淨利落的解決方案,因此決定在「更改」和「關鍵」事件上都觸發觸發器,以避免出現這種情況。

0

事件不能停止。

一種可能性可能是在事件觸發和$ .get方法的實際調用之間設置一定的超時時間,以便將您的情況考慮在內,但當然這不是一個優雅的解決方案。

否則,只有當某個其他元素獲得焦點時(例如,如果在下拉列表後面有文本框),您纔可以調用返回函數。

我不會太在意它,因爲看起來你的彈出窗口會在下拉菜單中顯示。如果不重要,您可以在下拉菜單的右側有一個幫助按鈕,在按鈕的點擊時彈出窗口。

0

我對你的問題有點困惑。但假設「變化」不是真正的變化,我認爲你可以爲「lastSelected」保留一個變量,當發生變化時,檢查它是否與此相反。如果相同,請忽略它。如果不同,請關閉Ajax請求並更新「lastSelected」的值。

1

如果它是ajax調用,那麼您的ajax調用有可能被緩存。確保您正在禁用緩存。像「緩存:假」

+0

我不明白這是如何涉及到這個問題。 – 2012-11-26 07:41:44