JQuery if element包含字符串然后执行类交换问题

时间:2013-10-08 14:38:16

标签: jquery

我正试图让JQUERY中的这个小脚本工作,但我遇到了问题。有谁看到我做错了什么?目的是看这一行:

<a id="dnn_dnnLogin_enhancedLoginLink" title="Logout" class="LoginLink" href="/Home/tabid/357/ctl/Logoff/Default.aspx">Logout</a>

如果它有字符串'logout',那么它应该将另一个div .navDiv的类交换为.navDivLoggedIn

  var elem = $('dnn_dnnLogin_enhancedLoginLink');
    if (elem.contains('Logout')) {
       var navelem = $('.navDiv');
       $(navelem).attr('class','navDivLoggedIn');
};

提前致谢!

7 个答案:

答案 0 :(得分:2)

contains不是jQuery函数,它在选择器本身中更像是一种正则表达式。

http://api.jquery.com/contains-selector/

你的意思是:

if ( $('#dnn_dnnLogin_enhancedLoginLink:contains("Logout")') ) {
    // stuff
}

您还可以对元素的text / html执行简单的.indexOf(),以测试Logout是否在元素内。

// you were also missing the # for ID
var elem = $('#dnn_dnnLogin_enhancedLoginLink');

if (elem.text().indexOf('Logout') > -1) {
    // stuff
}

答案 1 :(得分:1)

您需要在 ID 属性的前缀中添加#

var elem = $('#dnn_dnnLogin_enhancedLoginLink');
          ____^____

答案 2 :(得分:1)

你有一些错误。正如我在评论中指出的那样,您没有使用正确的语法通过其ID来选择元素。其次,当你可以立即在元素上使用jQuery选择器时,不需要为所有东西创建变量。最后,你正在使用错误的包含函数。

尝试:

if ($('#dnn_dnnLogin_enhancedLoginLink:contains("Logout")').length) {
    $('.navDiv').addClass('navDivLoggedIn');
};

这是一个简化的 jsFiddle example ,可以满足您的需求。

答案 3 :(得分:0)

这样的东西应该使用toggleClass和:contains,以及id指示符"#"。 jQuery元素没有.contains()作为方法,你必须像这样使用它

var elem = $('#dnn_dnnLogin_enhancedLoginLink:contains("Logout")');
if (elem.length > 0) {
    var navelem = $('.navDiv');
    navelem.toggleClass('navDiv navDivLoggedIn');
}

答案 4 :(得分:0)

更改

 $('dnn_dnnLogin_enhancedLoginLink');

通过

 $('#dnn_dnnLogin_enhancedLoginLink');

你应该像在CSS中一样在jquery中使用相同的选择器,所以当你的元素id是“dnn_dnnLogin_enhancedLoginLink”时,你应该使用“#dnn_dnnLogin_enhancedLoginLink”

答案 5 :(得分:0)

试试这个

 if( $("a.LoginLink").text().str.indexOf("Logout") >= 0)
 {
   var navelem = $('.navDiv');
   $(navelem).attr('class','navDivLoggedIn');
 }

答案 6 :(得分:0)

$('#dnn_dnnLogin_enhancedLoginLink').text().contains('Logout')

除了您的选择器中缺少#之外,您无法直接在选择器上执行contains()。使用.text().html()获取选择器中的文字&amp;然后做.contains()