0

私は次のjQueryを持っています:

    $(".score-window a:first-child").click(function() {
        $(".score-window").hide();
        $(".login-window").show();
    });

    $(".score-window a:nth-child(2)").click(function() {
        $(".score-window").hide();
        $(".register-window").show();
    });

これは次のHTMLに接続されています。

        <div class="score-window">
            <i class="icon-remove" title="Close"></i>
            <p>In order to view your score, you have to <a href="#">log in</a>.</p><br>
            <p>Don't have an account yet? <a href="#">Register</a>! Totally free and you'll get the ability to save your scores.</p>
        </div>

クラスにはリンクが2つしかscore-windowないので、なぜこれが機能しないのかわかりません。

4

4 に答える 4

2

2 つのリンクがありますが、それぞれがその親の唯一の子であるpため、それらは一致a:first-childするだけです。リンクの親は.score-windowではなくpです。ただし、要素の親は(および要素pとともに)ですibr .score-window

代わりに要素で使用するようにセレクターを修正してから、それぞれの下にある を選択:nth-child()する必要があります。最初の子である と、必要ないように見える2 つの要素の間に があります。それを削除してから、次のようにします。paibrp

$(".score-window p:nth-child(2) a").click(function() {
    $(".score-window").hide();
    $(".login-window").show();
});

$(".score-window p:nth-child(3) a").click(function() {
    $(".score-window").hide();
    $(".register-window").show();
});

br何らかの理由でそこにとどまる必要がある場合は、2 番目のセレクターに or を代わりに使用しますp:nth-child(4)p:last-child

jQuery 1.9 を使用している場合、または jQuery 1.9 にアップグレードできる場合は、代わりに を使用して要素 (つまり、最初と 2 番目):nth-of-type()だけにカウントを制限できますが、古いバージョンの jQuery はそれをサポートしていません。ppp

$(".score-window p:nth-of-type(1) a").click(function() {
    $(".score-window").hide();
    $(".login-window").show();
});

$(".score-window p:nth-of-type(2) a").click(function() {
    $(".score-window").hide();
    $(".register-window").show();
});
于 2013-02-15T13:01:19.107 に答える
0

ここで必要なのは

$(".score-window p:nth-child(2) a").click(function() {...});

タグaの子であり、ではないので...。<p><div class="score-window">

于 2013-02-15T13:02:10.893 に答える
0

a要素内に要素がありませんscore-window(つまり、の直接の子ですscore-window)。実際にはその範囲内pです。

于 2013-02-15T12:59:39.723 に答える
0

代わりに :eq を使用してください。a要素はスコアウィンドウの子であり、直接のものではないため、スペース構文は正しいです。要素は直接の親の最初の子ではありませんaが (それぞれの前にテキスト ノードがあります)、一致するセット内の最初の要素であるため、代わりに :eq を使用してください。マッチング時に途中の要素を指定する必要はありません。p

$(".score-window a:eq(0)").click(function() {
    $(".score-window").hide();
    $(".login-window").show();
});

$(".score-window a:eq(1)").click(function() {
    $(".score-window").hide();
    $(".register-window").show();
});
于 2013-02-15T13:21:51.403 に答える