2017-05-06 117 views
0

下面的代碼旨在刪除類似於#target以外的任何元素,但它沒有效果的情況下,從類元素「left」和「searchbar」中刪除類「on」 :jQuery:不選擇不工作點擊

$(':not(#target)').click(function() { 
$('li.searchbar.left').removeClass("on"); 
}); 

這裏是HTML,基本上如果用戶點擊任何地方但是#target它會從li上刪除on類。

<body> 
<header></header> 
<div class="one"></div> 
<div class="two"><a id="target"></a></div> 
<ul> 
<li class="searchbar left on"></li> 
</ul> 
<footer></footer> 
</body> 
+0

是'的頁面已經被任何加載之後target'添加#機會? – Jamiec

回答

1

// if click anywhere on <body> remove class on from given li 
 
$(document).on("click", function() { 
 
    $('li.searchbar.left').removeClass("on"); 
 
}); 
 

 
// if click happens on #target do nothing 
 
$('#target').on('click', function(e) { 
 
    e.stopPropagation(); 
 
});
body { 
 
    background-color: green; 
 
} 
 

 
#target { 
 
background-color: powderblue; 
 
width: 100px; height: 100px; 
 
} 
 

 
li.searchbar.left.on { 
 
    color: orange; 
 
} 
 

 
li.searchbar.left { 
 
    color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<ul> 
 
<li class="searchbar left on">hello</li> 
 
</ul> 
 

 
<div id="target">#target</div>

+0

不能用:不是? – Sam

+0

@Sam在這種情況下:不。就像你在哪裏嘗試它不能工作,因爲你需要聽點擊的東西,你不能只是說一個「不是那個元素」,沒有任何意義。只有當你將它賦給一個父元素並且向它的一個子元素說':not()'時,它纔會起作用。 – caramba

0

對於未選擇器,你有它適用於類似的團體元素。

例如像從具有類裏的列表「選擇」,但點擊一個沒有「選擇」類:

$('.left:not(#target)').click(function() { 
console.log("clicked"); 
}); 
+0

所有元素都沒有通配符? – Sam

-2
$("body").click(function(ev) { 
if(ev.target.id == "target") { 
return false; 
} else { 
// your code 
} 
}) 
+0

你能解釋一下片段中發生了什麼嗎? – Sam