0

したがって、このjsfiddleを確認してください。ここ

私がやろうとしていること。

それぞれが最初に非表示になっているコンテンツのdivが下にある一連の「リンク」。

リンクをクリックすると、A)そのリンクのdivコンテンツが表示されます。B)他のリンクのdivコンテンツが開いている場合は、閉じます。

つまり、一度に1つのdivコンテンツセクションのみを開く必要があります。

ハンドラーの上部で、clickクリックしたリンクのIDを変数にキャプチャしています。ただし、each通話中はこれが更新されているように見えます(デモの目的でそこにあるアラート通話で示されています)。

$('.link-part').click(function() {
    var clickedId = this.id;
    $('.link-part').each(function(i, obj) {
        alert(clickedId + " " + obj.id);
        if(clickedId = obj.id) {
            $('#' + obj.id + 'div').slideToggle(500);
        } else {
            if('none' != $('#' + obj.id + 'div').css('display')) {
                $('#' + obj.id + 'div').slideToggle(200);
            }
        }
    });
    return false;
});​

どうしてこれなの?どうすればそれを非可変変数にすることができますか?

4

2 に答える 2

3

比較を行うときに等号を見逃した場合は、次のように変更します。

if(clickedId = obj.id) {

if(clickedId == obj.id) {
于 2012-07-12T08:59:44.807 に答える
1

each別の方法として、この効果にループは必要ありません。これを試してください。

$('.link-part').click(function() {
    $('.div-part:visible').slideUp()
    $(this).next('.div-part').slideDown()
    return false;
});

デモ

于 2012-07-12T09:02:07.987 に答える