jQuery选择了李其第一个孩子是一个跨度
问题描述:
下面是一个HTML结构我不能改变:jQuery选择了李其第一个孩子是一个跨度
我成功地连接一个click事件处理那些li
的,就像这样:
$(document).on("click", "#menu li.top-level", function (e) {
// whatever code
});
不过,我不希望对有z-index: auto
由处理程序捕获li
的点击次数。我尝试这样做:
$(document).on("click", "#menu li.top-level[style='z-index: auto;']", function (e) {
和
$(document).on("click", "#menu li[style='z-index: auto;'].top-level", function (e) {
,但没有运气。
此外,li
的我想抓在处理程序有一个<a>
作为第一个孩子,而其他人有一个<span>
。也许这可以用来帮助?
编辑
下面是HTML结构:我想赶上上li
,而不是其他一个
答
当你不想选择具有style='z-index: auto;'
元素,然后使用:not()
选择和:has()
具有元素锚点目标的第一个孩子
$(document).on("click", "#menu li.top-level:not([style='z-index: auto;']):has(> a:first-child)", handler);
$(document).on("click", "#menu li.top-level:not([style='z-index: auto;']):has(> a:first-child)", function() {
console.log($(this).text());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="menu">
<li class="top-level"><a href="#">1</a></li>
<li class="top-level"><span>2</span></li>
<li class="top-level" style='z-index: auto;'><a href="#">3</a></li>
</ul>
+0
它仍然捕获点击两个:检查我的编辑 – chiapa
我认为你需要':not()'ie'“#menu li.top-level:not([style ='z-index:auto;'])”' – Satpal
Wha t @Satpal说 - 看起来你有你的标准倒退。 – BoltClock