:not $(this) 的合适选择器是啥
Posted
技术标签:
【中文标题】:not $(this) 的合适选择器是啥【英文标题】:What is the appropriate selector for :not $(this):not $(this) 的合适选择器是什么 【发布时间】:2016-02-12 19:42:33 【问题描述】:上面的黄色链接没有提供解决方案。正确答案是.siblings()
,它不在任何链接的解决方案中
我正在尝试选择所有td
元素,但作为$(this)
传递的元素除外。这样做的正确方法是什么?
我认为以下方法不起作用:
$(this).find(':not')
..因为我正在寻找与 $(this) 相同的 DOM 级别的所有内容。
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
$('a').click(function()
alert($(this).text());
);
);
</script>
</head>
<body>
<a>Apples</a><br />
<a>Bananas</a><br />
<a>Oranges</a><br />
</body>
</html>
只是为了清楚说明我正在寻找一种通用解决方案,而不是针对此示例的解决方案。 :)
【问题讨论】:
$(this).find("td").not(this)
已经回答:***.com/questions/437958/…
如果他们是兄弟姐妹(与this
相同的DOM级别),即都在同一行,你可以这样做$(this).siblings()
@adeneo - 太棒了。 siblings()
完美
@CainBot - 该链接中的解决方案无效。这些解决方案都没有提供正确的答案.siblings()
,现在在这个问题上提供了。
【参考方案1】:
使用.not()
方法排除之前的jQuery 选择。您可以将选择器传递给它,也可以传递现有元素或 jQuery 对象。
var others = $('td').not(this);
$('td').on('click', function()
$(this).css('color', 'red')
$('td').not(this).css('color', 'blue');
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr><td>Cell1</td><td>Cell2</td></tr>
<tr><td>Cell3</td><td>Cell4</td></tr>
<tr><td>Cell5</td><td>Cell5</td></tr>
</table>
jQuery.not() reference
在看到你的更新和各种cmet之后,我开始认为你只是想获得this
的兄弟姐妹。如果您只想要一个元素的兄弟姐妹,请使用 jQuery 的 siblings() 函数。此函数可选地接受选择器以仅获取特定的兄弟姐妹。无论如何,兄弟姐妹隐含地排除了this
本身。
$('td').on('click', function()
$(this).css('color', 'red')
$(this).siblings().css('color', 'blue');
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr><td>Cell1</td><td>Cell2</td></tr>
<tr><td>Cell3</td><td>Cell4</td></tr>
<tr><td>Cell5</td><td>Cell5</td></tr>
</table>
【讨论】:
应该只能使用this
而不是$(this)
- 无论哪种方式+1
@tymeJV 你是对的。这样更干净。我改了。
这是否适用于 > $($(this).parent()).not(this);
.. 更新:不。如何在不知道当前 dom 选择级别的情况下使用它。
TY 用于更新。 .siblings()
是正确答案。以上是关于:not $(this) 的合适选择器是啥的主要内容,如果未能解决你的问题,请参考以下文章