如何使用jquery在同名中找到正确的<h1>?

时间:2017-09-17 19:14:19

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

如果标题等于变量,我试图制作一个操作网站的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?

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

5 个答案:

答案 0 :(得分:0)

var wantedItem = "exempel 4";

const link = [...document.querySelectorAll(".name-link")]
 .find( el => el.innerHTML === wantedItem );

if( link ) link.click();

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

答案 1 :(得分:0)

尝试这样的事情

var wantedItem =“exempel 4”;

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

答案 2 :(得分:0)

您可以使用: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>

答案 3 :(得分:0)

使用: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>

答案 4 :(得分:-1)

var wantedItem = "exempel 4";

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

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

var wantedItem = "exempel 4";

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