我正试图让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');
};
提前致谢!
答案 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()