0
<div class="search_on" id="search-item">
    <span class="text">one</span>
</div>
<ul class="search_item" style="display: none;">
    <li><a href="#">one</a></li>
    <li><a href="#">two</a></li>
    <li><a href="#">three</a></li>
</ul>

jQueryコード:

$(document).ready(function(){

    $('#search-item .text').toggle(function () {
        $('ul.search_item').show();
    }, function () {
        $('ul.search_item').hide();
    });

    $('.search_item li a').click(function(){
        $('ul.search_item').hide();
        $('#search-item .text').text($(this).text());
        return false;
    }); 

});

aリンクをクリックすると、上記の値が期待どおりに2に変わります。しかし、私が2回クリックする必要があった変更からの値は、一番下のulリストに表示されます。なんで?

4

2 に答える 2

1

toggletoggleイベントメソッドは非推奨になりました。代わりにshow/hideを使用できます。

$('#search-item .text').click(function() {
    $('ul.search_item').toggle();
});

作業デモ http://jsfiddle.net/kH36R/

于 2012-10-30T09:26:02.117 に答える
1

またはこれを試してください:http://jsfiddle.net/sM7Tn/

あなたができること$('ul.search_item').is(':visible'))は目に見えるチェックであり、残りはロケットのように機能します:)

それが原因に合うことを願っていますB-)

コード

$(document).ready(function() {
    $('#search-item .text').click(function() {
        if (!$('ul.search_item').is(':visible')) 
            $('ul.search_item').show();
        else 
            $('ul.search_item').hide();

    });

    $('.search_item li a').click(function() {
        $('ul.search_item').hide();
        $('#search-item .text').text($(this).text());
        return false;

    });
});​
于 2012-10-30T09:32:06.850 に答える