所以我有这个功能
$('#wrapper').click(function () {
hideDropDown();
checkForPiehtcFix();
hideSearch();
});
#wrapper包含我的所有内容。因此,每当我点击任何地方,我都会隐藏我的搜索div。
function hideSearch() {
isDropSearch = false;
$('#mn_search').css({ 'background-position': '0 0' });
$('#dd_search').removeClass('show').addClass('hide');
}
问题在于,当用户点击我的搜索,即div #dd_search时,我不想隐藏搜索,因为用户永远不会进入搜索,因为当他们点击它时它会关闭。
所以我希望在#wrapper中添加一个子句点击以检查他们是否在#dd_search中点击了,如果他们这样做了,那么我就不想调用hideSearch();
答案 0 :(得分:1)
$("#wrapper").click(function (e) {
if ($(e.target).is("#dd_search") {
//special handling when dd_search is clicked
答案 1 :(得分:1)
$('#wrapper').click(function () {
hideDropDown();
checkForPiehtcFix();
if( !$(this).is('#dd_search') ) {
hideSearch();
}
});
答案 2 :(得分:1)
一种方法是:
$('#wrapper').on('click', ':not(#dd_search)'(function () {
...
});
第二种方式是:
$('#wrapper').click(function (e) {
if (e.target.id == 'dd_search' || $(e.target).find('#dd_search').length)
return false;
...
...
});
第三种方式是:
$('#wrapper').click(function () {
...
});
$('#dd_search').click(function(){
return false; // stops the bubbling.
});
答案 3 :(得分:0)
$('#wrapper>*').not('#dd_search').click(function () {
hideDropDown();
checkForPiehtcFix();
hideSearch();
});
如果点击了除dd_search之外的包装器的任何子节点,则触发。