目前我有一個彈出窗口。檢測文檔上的點擊,但忽略特定元素
我想要點擊除鏈接<a>
和按鈕<button>
以外的任何地方時隱藏此彈出窗口。
我可以添加事件偵聽器document
並忽略這些2個元素?
我嘗試以下,但它不能正常工作:
(function($) {
$(document).on('click', ':not(a, button)', function(event) {
event.preventDefault();
event.stopPropagation();
console.log(event.target.nodeName);
});
/* Other option, also not working properly
$(document).not('a, button').on('click', function (event) {
\t event.preventDefault();
event.stopPropagation();
console.log(event.target.nodeName);
});
*/
})(jQuery);
.container {
padding: 35px;
background: grey;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<a href="#" class="link">I'm a link</a>
<button>I'm a button</button>
</div>
選項我知道約,但仍然覺得不妥:
使用的,如果像這樣的語句:
if(event.target.nodeName.toLowerCase() !== 'a' or event.target.nodeName.toLowerCase() !== 'button') {
// Do w/e I want to
}
或停止親pagation使用:
$('a, button').on('click', function(event) {
event.stopPropagation();
});
只使用'$( 'A,按鈕')點擊(函數(){ 返回假。 });' –
@HappyCoding使用它將打破所有鏈接和按鈕.. –