此脚本允许您单击所需的所有元素,但是当您单击除该元素之外的任何元素时,它会淡出某些内容。在下面的代码中,我可以点击$('.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();
});
})();
然后我用它中的两个元素类调用该函数:
hideElementOnOffClick($('.wrapper'), $('.popup'))
如果我使用$('.wrapper')
代替elementWrapper和$('.popup')
而不是elementToHide,它会有效,但是当我把它变成我可以在具有不同类的不同地方调用的东西时,它却没有。
如何修复参数以使其有效?
答案 0 :(得分:3)
您可以使用.stopPropagation()
来停止事件传播,这可以使您的代码更加清晰。
function hideElementOnOffClick(elementWrapper, elementToHide) {
elementWrapper.click(function(e) {
e.stopPropagation();
});
$(document).click(function(e) {
elementToHide.fadeOut();
});
}