0

我试图让 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');
};

提前致谢!

4

7 回答 7

2

contains不是 jQuery 函数,它更像是选择器本身的正则表达式类型。

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

你的意思是:

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

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

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

if (elem.text().indexOf('Logout') > -1) {
    // stuff
}
于 2013-10-08T14:41:36.623 回答
1

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

var elem = $('#dnn_dnnLogin_enhancedLoginLink');
          ____^____
于 2013-10-08T14:40:46.933 回答
1

你有几个错误。正如我在评论中指出的那样,您没有使用正确的语法通过其 ID 选择元素。其次,当您可以立即在元素上使用 jQuery 选择器时,无需为所有内容创建变量。最后,您使用了错误的 contains 函数。

尝试:

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

这是一个简化的jsFiddle 示例,应该可以满足您的需要。

于 2013-10-08T14:49:24.413 回答
0

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

var elem = $('#dnn_dnnLogin_enhancedLoginLink:contains("Logout")');
if (elem.length > 0) {
    var navelem = $('.navDiv');
    navelem.toggleClass('navDiv navDivLoggedIn');
}
于 2013-10-08T14:40:45.427 回答
0

改变

 $('dnn_dnnLogin_enhancedLoginLink');

经过

 $('#dnn_dnnLogin_enhancedLoginLink');

您应该在 jquery 中使用与 CSS 中相同的选择器,因此当您的元素 id 是“dnn_dnnLogin_enhancedLoginLink”时,您应该使用“#dnn_dnnLogin_enhancedLoginLink”

于 2013-10-08T14:40:54.027 回答
0

尝试这个

 if( $("a.LoginLink").text().str.indexOf("Logout") >= 0)
 {
   var navelem = $('.navDiv');
   $(navelem).attr('class','navDivLoggedIn');
 }
于 2013-10-08T14:43:14.347 回答
0
$('#dnn_dnnLogin_enhancedLoginLink').text().contains('Logout')

除了选择器中的缺失外#,您不能contains()直接在选择器上进行操作。使用.text()or.html()获取选择器中的文本,然后执行.contains()

于 2013-10-08T14:44:56.393 回答