1

所以我有这个功能

    $('#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 click 中添加一个子句,以检查他们是否在#dd_search 中单击,如果他们这样做了,那么我不想调用 hideSearch();

4

4 回答 4

1
$("#wrapper").click(function (e) {
   if ($(e.target).is("#dd_search") {
      //special handling when dd_search is clicked
于 2013-01-08T18:42:36.723 回答
1
$('#wrapper').click(function () {
    hideDropDown();
    checkForPiehtcFix();
    if( !$(this).is('#dd_search') ) {
        hideSearch();
    }
});
于 2013-01-08T18:42:50.383 回答
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.
});
于 2013-01-08T18:43:11.010 回答
0
   $('#wrapper>*').not('#dd_search').click(function () {
      hideDropDown();
      checkForPiehtcFix();
      hideSearch();
    });

如果单击除 dd_search 之外的包装器的任何子级,则触发。

于 2013-01-08T18:53:19.870 回答