1

これらのhtmlおよびjQueryコードを見てください。

<button>div</button>
<button>span</button>
<div class="fill">fill</div>
<span class="fill">fill</span>
<div class="fill">fill</div>
<span class="fill">fill</span>
<div class="fill">fill</div>
<span class="fill">fill</span>

(function() {
    $('button').click(function() {
        var buttonVal = $(this).text();

        $.expr[':'].fillClass = function(element) 
            { return $(element).attr('class') === buttonVal);};

        $('div:fillClass').css('opacity', '.2');
    });
})(jQuery);

ボタンをクリックすると、ボタンの値がに保存されますbuttonValが、に入れると機能buttonValreturn $(element).attr('class') === buttonValません。関数の順序を変更しましたが、なぜ機能しないのかわかりません。

4

1 に答える 1

2

まず、要素のクラスがに等しいかどうかのブール値を返そうとしていると仮定しますbuttonVal。その場合、ステートメント全体を次のように括弧で囲む必要があります。

return ($(element).attr('class') === buttonVal);

ただし、別の問題があります。あなたのコードには、がありますvar buttonVal = $(this).text();。したがって、buttonVal値を持っているdivか、spanクリックしたボタンによって異なります。あなたが与えた要素のどれもクラスを持っていdivないspanので、それは何にも当てはまりません。

于 2012-11-23T09:31:13.373 に答える