如何检查链接是否有文本,并根据文本值评估条件-Jquery/JS



我想根据链接文本评估条件,并根据返回的值显示隐藏选项卡。

HTML:

<span class="links">
        <a href="#info">Info</a>
        <a href="#accounts>Accounts</a>
        <a href="#user">Users</a>
 </span>

在这里,我试图检查'a'是否有值"Accounts",如果是,则隐藏一个div.

我试过这个:

Js:

 var link = $('a').filter( function () {
   return $(this).text() =="Accounts";
    //will return: [<a href="#accounts>Accounts</a>]
 });

在某些不存在"帐户"链接的地方,它将返回:[]

现在我不知道如何检查数组是空的还是有值:

 if (link is empty){
     //hide ` <a href="#accounts>Accounts</a>`
 }else{
      //show ` <a href="#accounts>Accounts</a>`
  }

你知道如何评估这种情况吗/谢谢

您可以使用jQuery :contains选择器。由于0是falsy值,因此可以直接进行比较。

if ($("a:contains('Accounts')").length) {
    $("#accounts").hide();
} else {
    $("#accounts").show();
}

您可以执行类似的操作

var link = $('a').filter(function () {
    return $(this).text() == "Accounts";
    //will return: [<a href="#accounts>Accounts</a>]
});
//link is  a jQuery object that has a length property that tells how many dom elements are referred by this jQuery object
if (link.length) {
    //show div as 
} else {
    //hide div
}

为了防止你将来在页面的其他部分有一个带有文本账户的链接,我会这样做:

<span class="links" id="mylinks">
    <a href="#info">Info</a>
    <a href="#accounts>Accounts</a>
    <a href="#user">Users</a>
</span>
var link = $('#mylinks').find(a).filter(function () {
   return $(this).text() == "Accounts";
});
if (link.length) {
    //show div 
} else {
    //hide div
}

最新更新