2016-04-01 18 views
1

この問題が発生しました。onmousedownonselectstartイベントを特定のhtml要素に追加する必要があります。私はこれで試しましたが、属性ではないので、これはうまくいきません。html要素にイベントを追加する

$(".question, p, b, span, img").each(function(){ 
    $(this).addClass("disableSelection"); 
    $(this).attr("onmousedown", "return false;"); 
    $(this).attr('onselectstart', 'return false;'); 
}); 

<p onmousedown="return false;" onselectstart="return false;">Adding events</p> 

答えて

1

あなたはJS、ない時代遅れのon*イベント属性を使用してイベントハンドラを追加する必要があります。要素をループする必要もありません。イベントハンドラでreturn falseを使用することにより、あなたはまた、伝播を停止することを

$(".question, p, b, span, img") 
    .addClass('disableSelection'); 
    .on('mousedown selectstart', function() { 
     return false; 
    }); 

注:これを試してみてください。それが問題の場合は、イベントハンドラに渡されるイベントのpreventDefault()メソッドを使用できます。あなたはすでにあなたがより良いoff()メソッドを使用して提供することができるそれらのイベントにアタッチされたイベントハンドラを削除する場合

はまた、例えば、JavaScriptで.off('mousedown selectstart');

1

イベントは、HTML要素の属性ではありません。このドキュメントのページへ

$(".question, p, b, span, img").mousedown(function(){ 
    return false; 
}); 

Reffer:あなたはこのようなイベントを追加することができます

またhttps://api.jquery.com/mousedown/

、あなたが選択した要素を反復処理するために、.each関数を使用するべきではありません。 jQueryのは、あなたのためにそれを処理しますので、あなたの例のように、クラスを追加するために、私はあなたがこのようにそれを行うことをお勧め:

$(".question, p, b, span, img").addClass("disableSelection"); 
1

は、テキストを選択からユーザーを防ぐために、あなたはCSS次使用することができます。 How to disable text selection highlighting using CSS?

.noselect { 
 
    -webkit-touch-callout: none; /* iOS Safari */ 
 
    -webkit-user-select: none; /* Chrome/Safari/Opera */ 
 
    -khtml-user-select: none; /* Konqueror */ 
 
    -moz-user-select: none;  /* Firefox */ 
 
    -ms-user-select: none;  /* IE/Edge */ 
 
    user-select: none;   /* non-prefixed version, currently 
 
            not supported by any browser */ 
 
}

+1

から

必ず素敵なソリューションが、これは.disableSelectionクラスではなく、私はで動作するようにこれを必要とすることを使用して

+0

イムの中には動作しません注意してください古いブラウザ – Polo

関連する問題