0

このスクリプトを使用すると、必要な要素をクリックできますが、その要素以外のものをクリックすると、何かがフェードアウトします。以下のコードでは、内側にあるものをすべてクリックして$('.wrapper')も何も起こりませんが、その要素の外側にあるものをクリックすると、$('.popup')fadeOutが発生します。

(function hideElementOnOffClick(elementWrapper, elementToHide) {

    $(document).bind('click', function(evnt) {
        var $target = $(evnt.target);

       if ($target.is(elementWrapper) || elementWrapper.has(evnt.target).length) {
            return;
        }

        elementToHide.fadeOut();
    });
})(); 

次に、2つの要素クラスを含む関数を呼び出します。

hideElementOnOffClick($('.wrapper'), $('.popup'))

$('.wrapper')elementWrapperの代わりにelementToHideの代わりに使用すると機能$('.popup')しますが、それをさまざまなクラスのさまざまな場所で呼び出すことができるものにすると、機能しません。

これが機能するようにパラメータを修正するにはどうすればよいですか?</ p>

4

1 に答える 1

3

.stopPropagation()イベントの伝播を停止するために使用できます。これにより、コードがより明確になります。

function hideElementOnOffClick(elementWrapper, elementToHide) {
    elementWrapper.click(function(e) {
        e.stopPropagation();
    });
    $(document).click(function(e) {
        elementToHide.fadeOut();
    });    
}
于 2012-09-13T02:48:27.290 に答える