回答
您可以使用event bubbling,你的優勢在這裏,例如:
$("#test").click(function(e) {
e.stopPropagation();
});
$(document).click(function() {
$("#test").hide();
});
如果點擊來自內#test
來到它停止通過event.stopPropagation()
冒泡,如果從其他地方的click
將(通過來默認)一直膨脹到document
,其中.click()
處理程序隱藏#test
。
也許是這樣的:
// http://api.jquery.com/delegate/
// http://api.jquery.com/not-selector/
$("body").delegate("*:not(#test)", "click", function() {
$("#test").hide(); // But would be better to cache $("#test") !
});
'return false'防止默認動作,它也調用'.preventDefault()',它們是*不*等價的。它也是兩個處理程序*一次*不是選擇器檢查**'每個元素的每次點擊**''文檔'中,'.stopPropagation()'*更便宜。如果你這樣做,你也不需要'*'。另外,你最後的兩個方法*瘋狂*昂貴,它們綁定事件處理程序,除了'#test'本身之外的'document'中的每個單元**,*包括'#test'中的元素,所以它們甚至不正確。 – 2010-09-15 15:56:42
我沒有說「.preventDafault()」和「return false;」相當於第二個更小。我最後的兩個方法只是在這裏舉例,這就是爲什麼我說第一個是最好的(jQuery語法的觀點)。現在(性能角度),我也談到緩存,但剛纔提到,因爲這是另一回事。通用選擇器在這裏只是爲了告訴他,他可以修改它,因爲他的問題不是很清楚(點擊任何地方,但不是#test,真的嗎?)。這個最好的答案應該在我們之間,不是嗎? – 2010-09-15 16:16:25
@MAXymeum - 並非真的沒有......我的版本綁定了2次事件處理程序*一次*,並且不需要額外的工作來處理其他任何點擊,您的第一個方法在每次點擊時都會做很多額外的工作,而最後兩個方法是, *方式*更貴,在任何大頁面上,他們都會鎖定它。我關於'return false;'的觀點是,它們不可互換,如果不相同,你不能只是「使用簡短版本」,它們做不同的事情,你需要知道這一點。 – 2010-09-15 16:20:49
- 1. 從Visual Studio Test Explorer隱藏測試
- 2. Selenium test to test cookie
- 3. ($ test)=(@test)之間的差異是多少?和$ test = @test;在Perl中?
- 4. 點擊隱藏子元素
- 5. jQuery |點擊子,隱藏父
- 6. 關閉或隱藏點擊或隱藏輸入窗口或點擊listviewItem
- 7. htaccess;/search /?q = test to/test
- 8. `test`指令做了什麼?
- 9. jQuery:如果再次點擊,隱藏
- 10. jQuery隱藏,如果點擊按鈕外
- 11. 如果點擊外部隱藏/切換
- 12. 如果在其他地方點擊,使div隱藏AngularJs
- 13. Javascript - Onclick show inline - 隱藏,如果在其他地方點擊
- 14. 如何隱藏子菜單時其他菜單點擊JQuery的
- 15. 如何隱藏其ListVIew中的項目後點擊NavigationDrawer?
- 16. 如何隱藏菜單項,如果其子菜單摺疊?
- 17. 如何顯示或隱藏點擊幻燈片效果的div?
- 18. 執行`make check`或`make test`
- 19. bitset :: operator [] == false/true或bitset :: test?
- 20. 當點擊列表項隱藏其他項目
- 21. Resharper Test Runner竊取焦點
- 22. 點行家test目錄
- 23. 爲什麼var test = false在test =!test時變爲true?
- 24. 隱藏多個PictureBox除了點擊
- 25. Android - 「ant test」子目錄
- 26. 如何點擊狀態項目顯示或隱藏窗口?
- 27. 使用Test :: More和Test :: Deep打印失敗的子測試
- 28. 如何將「/ test/test」映射到映射到「/ test」的控制器的方法?
- 29. 點擊div的外部使其隱藏
- 30. 「play test」classpath與「sbt test」classpath不同
再次感謝夥計! :) – Nike 2010-09-15 14:55:17