Jquery .unbind和.html无法正常工作

时间:2012-08-14 20:54:30

标签: jquery

下面的代码假设删除#approve和#deny并回显用户在按下其中一个链接时按下的内容。

<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
    $('#approve').click(function(){
            $('#approve').unbind('click');
            $('#deny').unbind('click');
            $('.rare').html('Approved!');
        });
        return false;
    });
    $('#deny').click(function(){
            $('#approve').unbind('click');
            $('#deny').unbind('click');
            $('.rare').html('Denied!');
        });
        return false;
    });
})
</script>
</head>
<body>
<div class="rare">
    <a href id="approve">Approve</a>
    <a href id="deny">Deny</a>
</div>
</body>
</html>

但它似乎没有用,我是jquery的新手,所以我不明白为什么它不起作用。 jquery托管我的谷歌

2 个答案:

答案 0 :(得分:7)

你的嵌套看起来很破,试试这个:

$(function(){

    $('#approve').click(function(){
        $('#approve').unbind('click');
        $('#deny').unbind('click');
        $('.rare').html('Approved!');
        return false;
    });

    $('#deny').click(function(){
        $('#approve').unbind('click');
        $('#deny').unbind('click');
        $('.rare').html('Denied!');
        return false;
    });
})

此外,我不会假设您为何返回false,但如果您想要阻止默认的click事件行为,则这是首选方法:

$('#deny').click(function(e){
    // Absorb click
    e.preventDefault();
    $('#approve').unbind('click');
    $('#deny').unbind('click');
    $('.rare').html('Denied!');
});

干杯

答案 1 :(得分:1)

如果这正是您的代码,您应该在firbug / IE的控制台中收到错误。您正在过早地关闭准备好的函数$(function(){并暂停})以及在函数外部返回值。

您的代码应该是:

$(function(){
    $('#approve').click(function(){
            $('#approve').unbind('click');
            $('#deny').unbind('click');
            $('.rare').html('Approved!');
    });
    $('#deny').click(function(){
            $('#approve').unbind('click');
            $('#deny').unbind('click');
            $('.rare').html('Denied!');

    });
});