0

ここにいくつかの例があり、1.caseは機能しませんが、2.caseは機能します。どうして?

したがって、ボタンが2.caseで機能するのと同じように、1.caseで作業する必要があります。

jsコードは次のとおりです:http://jsfiddle.net/mwsvP/8/

$(".ca_button, .ca_button1,.button").click(function () {

    var t = $(this);

    $par = t.parent();

    $par.find(".ca_button, .ca_button1").css("background-color", "#bababa");

    if ($(this).hasClass("ca_button1")) {
        t.find("a").css("background-color", "#0F0");
    } else if ($(this).hasClass("ca_button")) {
        t.find("a").css("background-color", "#F00");
    }
});
4

2 に答える 2

2

これからあなたのhtmlを変更してください:

<div>PRICE - 1.case
<a href="javascript:void(0)" class="ca_button" onClick="setQuality(-100, 'price_quality', '{$lang501}/{$lang502}');">Disadvantage</a>
<a class="button">Average</a>

アドバンテージ

これに:

<div>PRICE - 1.case
<div class="ca_button"><a href="javascript:void(0)" class="ca_button" onClick="setQuality(-100, 'price_quality', '{$lang501}/{$lang502}');">Disadvantage</a>
    </div>
<a class="button">Average</a>

アドバンテージ

于 2013-03-14T16:23:56.450 に答える
1

のためt.find("a")

最初のケースでは、クラスまたは`ca_button``aを持つ要素の子としてはありません。ca_button

コードには、クリックされたターゲットの子として登録されたクリックイベント.ca_button.ca_button``, so theta`will be pointing to that, then in the code where you are changing the color you are looking for a要素があります。

このケースは、ケース1とは一致しません。

$(".ca_button, .ca_button1,.button").click(function () {

    var t = $(this);

    $par = t.parent();

    $par.find(".ca_button, .ca_button1").css("background-color", "#bababa");

    var t1 = t.is('a') ? t : t.find('a');

    if (t.hasClass("ca_button1")) {
        t1.css("background-color", "#0F0");
    } else if (t.hasClass("ca_button")) {
        t1.css("background-color", "#F00");
    }
});

デモ:フィドル

于 2013-03-14T16:24:08.310 に答える