【问题标题】:How to find the right <h1> among others with the same name with jquery? [duplicate]如何找到与 jquery 同名的正确 <h1> ? [复制]
【发布时间】:2017-09-18 04:57:14
【问题描述】:

如果标题等于以下变量,我正在尝试制作一个 chrome 扩展来操纵网站按下链接:

var wantedItem = "exempel 4";

if ($("h1") == wantedItem) {
    $("a")[0].click();
  } else {
    *tries the next one*
 }

但问题是我尝试执行此操作的网站没有命名不同的 h1,它看起来像这样:

<h1><a class="name-link" href="">exempel 1</a></h1>
<h1><a class="name-link" href="">exempel 2</a></h1>
<h1><a class="name-link" href="">exempel 3</a></h1>
<h1><a class="name-link" href="">exempel 4</a></h1>
<h1><a class="name-link" href="">exempel 5</a></h1>
<h1><a class="name-link" href="">exempel 6</a></h1>
<h1><a class="name-link" href="">exempel 7</a></h1>
<h1><a class="name-link" href="">exempel 8</a></h1>
<h1><a class="name-link" href="">exempel 9</a></h1>

当有更多同名变量时,我如何检查我的变量是否等于 h1?

希望任何人都可以帮助并理解我写的内容

【问题讨论】:

    标签: javascript jquery html google-chrome google-chrome-extension


    【解决方案1】:
    var wantedItem = "exempel 4";
    
    const link = [...document.querySelectorAll(".name-link")]
     .find( el => el.innerHTML === wantedItem );
    
    if( link ) link.click();
    

    只需找到具有该特定内容的元素,然后单击该元素(或执行其他操作)。

    【讨论】:

      【解决方案2】:

      试试这样的

      var WantItem = "exempel 4";

      if ($("h1").text() == wantedItem) {
          $(this).find("a")[0].click();
        } else {
          *tries the next one*
       }
      

      【讨论】:

        【解决方案3】:

        您可以使用:contains() 选择器来实现:

        var wantedItem = "exempel 4";
        $('h1:Contains("' + wantedItem + '") a')[0].click();
        

        // just for this demo:
        $('h1 a').click(function(e) {
          console.log($(this).text());
        });
        
        var wantedItem = "exempel 4";
        $('h1:Contains("' + wantedItem + '") a').click();
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        <h1><a class="name-link" href="">exempel 1</a></h1>
        <h1><a class="name-link" href="">exempel 2</a></h1>
        <h1><a class="name-link" href="">exempel 3</a></h1>
        <h1><a class="name-link" href="">exempel 4</a></h1>
        <h1><a class="name-link" href="">exempel 5</a></h1>
        <h1><a class="name-link" href="">exempel 6</a></h1>
        <h1><a class="name-link" href="">exempel 7</a></h1>
        <h1><a class="name-link" href="">exempel 8</a></h1>
        <h1><a class="name-link" href="">exempel 9</a></h1>

        【讨论】:

          【解决方案4】:

          使用:contains():

          var wantedItem = "exempel 4";
          
          var theH1 = $('h1:contains(' + wantedItem + ')');
          theH1.find('a').click();
          <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
          <h1><a class="name-link" href="">exempel 1</a></h1>
          <h1><a class="name-link" href="">exempel 2</a></h1>
          <h1><a class="name-link" href="">exempel 3</a></h1>
          <h1><a class="name-link" href="">exempel 4</a></h1>
          <h1><a class="name-link" href="">exempel 5</a></h1>
          <h1><a class="name-link" href="">exempel 6</a></h1>
          <h1><a class="name-link" href="">exempel 7</a></h1>
          <h1><a class="name-link" href="">exempel 8</a></h1>
          <h1><a class="name-link" href="">exempel 9</a></h1>

          【讨论】:

            【解决方案5】:
            var wantedItem = "exempel 4";
            
            if ($("h1") == wantedItem) {
                $("a")[0].click();
            } else {
            *tries the next one*
            }
            

            $("h1") 实际上会返回一个对象,您试图将其与字符串值匹配。您实际需要做的是访问 innerHTML 并将其与相应的字符串匹配。为此,jquery 为您提供了 .text 函数。您需要做的第二件事是遍历所有元素以找到您的匹配项,jquery 为您提供了相同的 .each 函数。

            var wantedItem = "exempel 4";
            
            $( "h1 > a" ).each(function( index ) {
                 if($( this ).text() == wantedItem){
                   //perform click here.
                   $( this )[0].click();
                 }
             });
            

            【讨论】:

            • 我认为你是在正确的轨道上。我添加了 console.log(this) 来查看输出是什么。但它不只是得到我得到洞的文本 exempel
            • 试试我贴的sn-p,看看能不能解决你的问题。
            • 我将 [0] 添加到 $( this ).click();所以 $( 这个 )[0].click();然后它起作用了!非常感谢
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-10-24
            • 2020-07-31
            • 2011-06-27
            • 1970-01-01
            • 2010-09-06
            • 2014-10-16
            相关资源
            最近更新 更多