: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) 的合适选择器是啥的主要内容,如果未能解决你的问题,请参考以下文章

“+”(加号)CSS 选择器是啥意思?

css中的三倍大于选择器是啥?

“~”(波浪线/波浪线/旋转)CSS 选择器是啥意思?

class="c1 c2" 的 css 选择器是啥 [重复]

css @选择器的目的是啥? [复制]

通过 :not 在 jQuery 选择器中隐藏除 $(this) 之外的所有内容