我是一个完全的初学者,并希望在我的第一个剧本上得到一些帮助。
基本上我想要一个链接,当点击时会使div向下滑动并更改链接文本,当再次单击时,该过程会反转。
这是我的代码:
$(function() {
if ($('#link1:contains("link text")')) {
$('#link1').click(function() {
$('#div1').slideDown(2000);
$('#link1').text('hide div 1');
});
}
else {
$('#link1').click(function() {
$('#div1').slideUp(2000);
$('#link1').text('link text');
});
}
});
感谢所有人的帮助。
答案 0 :(得分:7)
if ($('#link1:contains("link text")')) {
永远都是真的。 Jquery将始终返回一个对象。你需要改变它是:
if ($('#link1:contains("link text")').length>0) {
答案 1 :(得分:3)
$function(){
$('#link1').click(function() {
if($('#link1:contains("link text")').length){
$('#div1').slideDown(2000);
$(this).text('hide div 1');
} else {
$('#div1').slideUp(2000);
$(this).text('link text');
}
});
});
据我了解,每次单击按钮时都需要评估文本。这样就行了。
答案 2 :(得分:1)
JavaScript中的Object
是 truthy 。你需要揭露一些可能是真实的或虚假的东西。
如果检查jQuery对象是否匹配任何元素,请检查length
属性。
答案 3 :(得分:0)
我觉得你希望第一个选择不返回任何元素。
在jQuery中,即使没有选择任何元素,它仍然返回一个空数组,!![]
为真,因此它不会运行else,因为if为真。
你应该尝试的是
if ($('#link1:contains("link text")')[0]) {
...
因为如果没有找到任何元素,则第一个值将是未定义的,其值为false。