Jquery .click函数,更改特定id的行为

时间:2013-01-08 18:40:41

标签: jquery css

所以我有这个功能

    $('#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();

4 个答案:

答案 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之外的包装器的任何子节点,则触发。