0

在这里,我有一些示例,并且 1.case 中的相同代码不起作用,但在 2.case 中有效。为什么?

所以我需要在 1.case 中工作,就像按钮在 2.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").

在您的第一种情况下,没有aca_button或“ca_button”元素的子元素。

在您的代码中,您已经注册了 click 事件,.ca_button并且.ca_button``, so thet will be pointing to that, then in the code where you are changing the color you are looking for aa` 元素作为被点击目标的子元素。

这种情况与情况 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 回答