回调函数问题jquery

时间:2013-02-26 12:51:31

标签: jquery if-statement callback

我在回调函数中有一个问题,我不明白为什么。

点击div后,文字正在按照我的意愿改变,但在第一次拍摄后它不再有效。

我的代码是:

<div id="2">message</div>
<div id="1">dfdfgdfgrr</div>

<script src="jquery.js"></script>
<script>
$(function () {

$('#2').toggle();

function test() {
    $(document).on('click', '#1', function () {
        $('#2').toggle(300, function() {
            if($('#1').text('show')){
                $('#1').text('hide');
            }else{
                $('#1').text('show');
            }
        });
   });
}

test();


});
</script>

http://jsfiddle.net/manguo_manguo/cydjY/

4 个答案:

答案 0 :(得分:1)

      if($('#1').text() === 'show'){
            $('#1').text('hide');
        }else{
            $('#1').text('show');
        }

答案 1 :(得分:1)

您使用$('#1').text("show")代替$('#1').text() == "show"

$('#2').toggle();

function test() {
    $(document).on('click', '#1', function () {
        $('#2').toggle(300, function() {
            if($('#1').text() == 'show'){
                $('#1').text('hide');
            }else{
                $('#1').text('show');
            }
        });
   });
}

test();

答案 2 :(得分:1)

其他解决方案是正确的,但第一次没有显示显示标签。

这是一个完整的解决方案:

$(function () {

$('#2').toggle();

function test() {
    $(document).on('click', '#1', function () {
        $('#2').toggle(300, function() {
            if($('#1').text() == 'hide'){
                $('#1').text('show');
            }else{
                $('#1').text('hide');
            }
        });
   });
}

test();
$('#1').text('show');
});

尝试示例here

答案 3 :(得分:1)

$('#1').text(function(i, t) { return t == 'show' ? 'hide' : 'show' });