【问题标题】:Can I use brackets to separate multiple selectors?我可以使用括号来分隔多个选择器吗?
【发布时间】:2018-08-10 18:17:39
【问题描述】:

我想选择嵌套在类 article article_rubric_top 或类 article article_top article_right 的 div 下的第一个标签 a

我试试:

$('div.article.article_rubric_top a:first,div.article.article_top.article_right a:first')

但得到的标签比预期的要少得多。我想知道当我使用多个选择器时是否应该以某种方式分隔嵌套的标签选择器?

像这样:

$('(div.article.article_rubric_top a:first),(div.article.article_top.article_right a:first)')

更新: 最小数据示例。我希望匹配所有三个a 标签。

<div class="article article_rubric_top">            
            <a href="http://ua.korrespondent.net/showbiz/music/3899530-duet-potap-i-nastia-zaiavyv-pro-te-scho-yde-zi-stseny" class="article__img-link"></a>           
</div>

<div class="article article_top article_right">

            <a href="http://ua.korrespondent.net/ukraine/3899526-ukraintsi-pochaly-chastishe-yizdyty-v-rosiui" class="article__img-link">
                <noscript><img src="https://kor.ill.in.ua/m/400x253/2072539.jpg"></noscript><img src="/i/blank.gif" data-href="https://kor.ill.in.ua/m/400x253/2072539.jpg" alt="Українці почали частіше їздити в Росію" class="article__img lzl"></a>         
</div>

<div class="article article_rubric_top">          
            <a href="http://ua.korrespondent.net/ukraine/3899521-likari-dozvolyly-prodovzhyty-sud-nad-kokhanivskym" class="article__img-link">
            </a>           
</div>

更新由于某种原因,最小的例子不能作为我实际的example

Image of jquery run in browser

我得到diva 标签,而不仅仅是a 标签。

【问题讨论】:

  • “应该”你吗?从什么时候开始允许这样做的?我错过了什么吗?
  • @BoltClock,你说得有道理。已更正。我需要逻辑括号,我问有没有?
  • 假设 () 将被允许在 css 中进行分组,那么两个选择器很可能仍会产生相同的结果。所以请展示一个你得到错误结果的最小例子,并解释你期望的结果,比如fiddle
  • @t.niese: Related

标签: jquery jquery-selectors logical-operators brackets multipleselection


【解决方案1】:

我不认为你可以。我从未尝试过,但我认为有更好的可能性。

你可以简化选择器

$(".article > a");

你可以join一个数组

$([
    "div.article.article_rubric_top a:first",
    "div.article.article_top.article_right a:first"
].join(","))

我认为这比使用更长的字符串要容易得多

【讨论】:

    【解决方案2】:

    尝试像这样编写你的选择器:

    $('div.article.article_rubric_top,div.article.article_top.article_right').find('a:first')

    这是一个有效的 sn-p,我想这就是你想要的?

    $('div.article.article_rubric_top,div.article.article_top.article_right').find('a:first').css('border','1px solid red');
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="article article_rubric_top">            
                <a href="http://ua.korrespondent.net/showbiz/music/3899530-duet-potap-i-nastia-zaiavyv-pro-te-scho-yde-zi-stseny" class="article__img-link">a</a>           
    </div>
    
    <div class="article article_top article_right">
    
                <a href="http://ua.korrespondent.net/ukraine/3899526-ukraintsi-pochaly-chastishe-yizdyty-v-rosiui" class="article__img-link">b
                    <noscript><img src="https://kor.ill.in.ua/m/400x253/2072539.jpg"></noscript><img src="/i/blank.gif" data-href="https://kor.ill.in.ua/m/400x253/2072539.jpg" alt="Українці почали частіше їздити в Росію" class="article__img lzl"></a>         
    </div>
    
    <div class="article article_rubric_top">          
                <a href="http://ua.korrespondent.net/ukraine/3899521-likari-dozvolyly-prodovzhyty-sud-nad-kokhanivskym" class="article__img-link">c
                </a>
    </div>

    【讨论】:

      【解决方案3】:

      我希望匹配所有三个 a 标签。

      您的选择器应该是div.article a:first-child - 不要将其与特定类过度复杂化。您有一个完全有效的共享类来定位适当的 div 元素。

      $('.article a:first-child').css("background-color","yellow");
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <div class="article article_rubric_top">            
                  <a href="http://ua.korrespondent.net/showbiz/music/3899530-duet-potap-i-nastia-zaiavyv-pro-te-scho-yde-zi-stseny" class="article__img-link">1</a>           
      </div>
      
      <div class="article article_top article_right">
      
                  <a href="http://ua.korrespondent.net/ukraine/3899526-ukraintsi-pochaly-chastishe-yizdyty-v-rosiui" class="article__img-link">
                      <noscript><img src="https://kor.ill.in.ua/m/400x253/2072539.jpg"></noscript><img src="/i/blank.gif" data-href="https://kor.ill.in.ua/m/400x253/2072539.jpg" alt="Українці почали частіше їздити в Росію" class="article__img lzl">2</a>         
      </div>
      
      <div class="article article_rubric_top">          
                  <a href="http://ua.korrespondent.net/ukraine/3899521-likari-dozvolyly-prodovzhyty-sud-nad-kokhanivskym" class="article__img-link">3
                  </a>           
      </div>

      【讨论】:

      • 至于 jQuery 和 CSS 有同名的伪类,如果我真的想把责任归咎于其中之一,那就是 jQuery。 jQuery 的 :first 伪设计完全颠覆了选择器的工作方式。 CSS 中的 :first 伪代码是一个页面选择器,实际上与对话无关,因为页面选择器遵循与选择器标准的其余部分不同的语法。
      • "jQuery 的 :first pseudo 的设计完全颠覆了选择器的工作方式。"恰当的例子:这个答案是错误的 - div.article a:first 最多只能匹配一个 a 元素 - 第一个匹配 div.article a 的元素。
      • @Boltclock 由于不是母语人士,我可能错过了阐明我的观点。 “让 jQuery 陷入困境”本应归咎于 jQuery。很高兴看到几乎所有大型操作系统库都越来越倾向于克服 jQuery 作为依赖项。
      • @BoltClock 好地方(这是来自 OP 的懒惰副本)。现已修复。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-15
      • 1970-01-01
      • 2013-09-02
      相关资源
      最近更新 更多