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をクリックしたときに、検索を非表示にしたくないということです。ユーザーが検索をクリックすると閉じるため、検索を入力することができないからです。

だから私は#wrapperclick内に句を追加して、彼らが#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

1つの方法は次のとおりです。

$('#wrapper').on('click', ':not(#dd_search)'(function () {
    ...
});

2番目の方法は次のとおりです。

$('#wrapper').click(function (e) {
    if (e.target.id == 'dd_search' || $(e.target).find('#dd_search').length)
        return false;
    ...
    ...
});

3番目の方法は次のとおりです。

$('#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 に答える