0

特定の要素に特定のインライン css スタイルがある場合にのみ実行される条件文を機能させようとしています。

http://jsfiddle.net/zGg7Z/ HTML

<div>
    <div class="box">1</div>
    <div class="box">2</div>
    <div class="box">3</div>
    <div class="box">4</div>
</div>

JS

$(function(){

    if ( $('.box').filter( function(){
        return $(this).css('opacity') !== "0.4";
    }) )  {
        $('.box').on('click', function(){
            $(this).siblings('.box').css("opacity", "0.4")
        });
    }

})

したがって、ボックスをクリックすると、その兄弟は にフェードしopacity: 0.4;ますが、ボックスのいずれかがその不透明度を持っている限り、フェード機能を再度実行したくありません。ありがとう。

4

3 に答える 3

1

jquery を使用してカスタム フィルターを作成し、不透明度 css プロパティをテストすることは完全に可能ですが、デザインを変更して、次のように新しい css クラスを作成することを強くお勧めします。

 .glass { 
    opacity: 0.4;
 }

そして、このクラスをインライン プロパティの代わりに、または一緒に適用します。

それから

selector.filter('.glass')

持っているすべての要素から要素のサブセットをフィルタリングします。

それ以外の場合は、関数で filter を使用します。

 $( "div" ).filter(function( index ) {
     return $( this ).css('opacity') == "0.4";
 })
于 2013-10-21T20:57:58.003 に答える
0

通常、条件にイベント ハンドラーを追加することは望ましくありません。代わりに、常にハンドラーをバインドしてから、ハンドラー内の条件を確認してください。ただし、この場合、実際には条件はまったく必要ないと思います。私はあなたがこのようなものを探していると思います:

http://jsfiddle.net/tHUwK/

$('.box').on('click', function() {
    $(this).removeClass('faded').siblings('.box').addClass('faded');
});
于 2013-10-21T20:58:26.640 に答える