0

コールバック関数のifに問題があり、その理由がわかりません。

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

4 に答える 4

1
      if($('#1').text() === 'show'){
            $('#1').text('hide');
        }else{
            $('#1').text('show');
        }
于 2013-02-26T12:56:38.420 に答える
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();
于 2013-02-26T12:56:41.397 に答える
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');
});

ここで例を試してください

于 2013-02-26T13:05:24.740 に答える
1
$('#1').text(function(i, t) { return t == 'show' ? 'hide' : 'show' });
于 2013-02-26T13:05:58.790 に答える