else语句似乎没有执行

时间:2011-05-12 01:58:55

标签: jquery

我是一个完全的初学者,并希望在我的第一个剧本上得到一些帮助。

基本上我想要一个链接,当点击时会使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');
        }); 
}
});

感谢所有人的帮助。

4 个答案:

答案 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。