jQuery if属性包含某个值

时间:2011-06-07 09:30:06

标签: jquery

这里总有一点空白。 希望你能帮忙。

当属性'href不以#overlay'开头时,我如何将此参数更改为...

if(this.getTrigger().attr("href")){
// stuff in here
}

谢谢你们精彩的人们。 凯文

6 个答案:

答案 0 :(得分:8)

您可以使用slicesubstringsubstr

if (this.getTrigger().attr("href").slice(0, 8) != "#overlay") {
}

indexOf

if (this.getTrigger().attr("href").indexOf("#overlay") != 0) {
}

或正则表达式test方法:

if (!/^#overlay/.test(this.getTrigger().attr("href"))) {
}

答案 1 :(得分:2)

如果你想使用jQuery选择器:

if(this.getTrigger().is('a:not([href^="#overlay]")')) {
  // stuff in here
} 

编辑:在您已经只有一个项目且想要检查其href值的情况下,选择器解决方案的表现比仅仅将属性切片与{{ 1}}正如其他答案所示。我刚发布了我的解决方案,表明有不止一种方法可以做到这一点。

答案 2 :(得分:1)

你可以这样检查

if(this.getTrigger().attr("href").indexOf('#overlay') != 0) {
}

答案 3 :(得分:1)

使用indexOf()

<a id="myLink" href="http://company.com/?action=someAction">someAction</a>

href = $("#myLink").attr('href');

if(href.toLowerCase().indexOf('someaction') >= 0) {
    alert("someAction was found on href");
}

答案 4 :(得分:0)

使用match(RegEx)测试href是否以#overlay开头,然后否定它:

if (!this.getTrigger().attr("href").match(/^#overlay/)) {
    // stuff in here
}

答案 5 :(得分:0)

试试这个

String.prototype.startsWith = function(str){
    return (this.indexOf(str) === 0);
}

if(!this.getTrigger().attr("href").startsWith("#overlay")){
// stuff in here
}

var check = "#overlay";
if(!this.getTrigger().attr("href").substring(0, check.length) === check){
// stuff in here
}