0

此脚本允许您随意单击某个元素,但是当您单击该元素以外的任何内容时,它会淡出某些内容。在下面的代码中,我可以单击其中的所有$('.wrapper')内容,但没有任何反应,但是当我单击该元素之外的任何内容时,我会$('.popup')淡出。

(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,它会起作用,但是当我将它变成可以在不同地方使用不同类调用的东西时,它不会。

如何修复参数以使其正常工作?​</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 回答