2012-09-13 57 views
0

該腳本允許您單擊所有您想要的元素,但當您單擊除該元素之外的任何元素時,它會淡化某些內容。在我的代碼中,我可以點擊我想要的$('.wrapper')以內的所有內容,但沒有任何反應,但是當我點擊該元素之外的任何內容時,我有$('.popup') fadeOut。如何給這個javascript/jquery函數添加參數?

(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(); 
    }); 
})(); 

然後我打電話與這兩個元素類的功能吧:

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

它的工作原理髮現,如果我使用$('.wrapper')代替elementWrapper和$('.popup')代替elementToHide,但是當我做很多事情變得我可以在不同班級的不同地方打電話,但不是。

如何解決這些參數的問題?

回答

3

您可以使用.stopPropagation()停止事件傳播,這會讓您的代碼更清晰。

function hideElementOnOffClick(elementWrapper, elementToHide) { 
    elementWrapper.click(function(e) { 
     e.stopPropagation(); 
    }); 
    $(document).click(function(e) { 
     elementToHide.fadeOut(); 
    });  
} 
+0

哇謝謝你,完美! –

相關問題