1

私が克服していない別の問題があるようです。本当に単純な前提。mousedown イベントがあり、基本的に、ページ上の特定の要素がクリックされた場合、何も起こらないようにしたいです。

    $(function(){
        $("document :not(#_ignorelement)").mousedown(function(event){
                if($('#_hidethiselement').length){
                    $('#_hidethiselement').hide();
                }
        })
     })

それはまったく機能していません。私も次のことを試しました:

    $(document).not($("#_ignorelement")).mousedown(function(event){

    $(document).not("_ignorelement").mousedown(function(event){

私がそれを解決できれば、実際にどのように ":not" が親 div を包含するのか不思議です。

$().not("_ignoreelement").parent().closest('div').mousedown(function

要素「_ignorelement」は、div 内にあるアンカー タグであるためです。アンカータグの代わりに、おそらく親 div をどのように使用できるのだろうか。

とにかく、助けていただければ幸いです。

4

2 に答える 2

2

document選択できるノードではありません。代わりにこれを試してください:

$(function(){
    $("body :not(#_ignorelement)").mousedown(function(event){
        if($('#_hidethiselement').length){
            $('#_hidethiselement').hide();
        }
        return false;
    })
 });

これが実際の例です

于 2012-06-05T22:23:53.443 に答える
1

これは機能するはずです:

var ignoreNode = jQuery('#_ignorelement')[0];

jQuery(document).on('mousedown', function(e) {
  if (ignoreNode === e.target || jQuery.contains(ignoreNode, e.target)) {
    // If the target is, or is inside the ignoreNode, don't
    // do anything.
    return;
  }

  // Do your hiding handling here 
});

すべてのイベントでセレクタークエリを実行しないように、jQueryオブジェクトをキャッシュすることをお勧めします。

于 2012-06-05T22:38:03.333 に答える