このjQueryトグルがあります。それはうまく動作します。
<ul>
<li>Go to the store</li>
<li>Pick up dinner</li>
<li>Debug crash</li>
<li>Take a jog</li>
</ul>
$("li").toggle(
function () {
$(this).css({"list-style-type":"disc", "color":"blue"});
},
function () {
$(this).css({"list-style-type":"disc", "color":"red"});
},
function () {
$(this).css({"list-style-type":"", "color":""});
}
);
問題は、高速クリックすると、その中のテキストが強調表示されることです。テキストが強調表示されないようにする方法はありますか?
デスクから離れてiPhoneで書いていますが、簡単なGoogleがこのページを表示しました: jQueryでテキスト選択を無効にする 。
'dead link'コメント(@Herb Caudillから)への応答として編集。元のリンクは確かに死んでいますが、サイトの再構築(削除ではなく)によるものと思われ、記事の新しい場所はここにあります: http://chris-barr.com/ index.php/entry/disable_text_selection_with_jquery /
そして、その記事で提供されているコードを以下に再現します。
$(function(){
$.extend($.fn.disableTextSelect = function() {
return this.each(function(){
if($.browser.mozilla){//Firefox
$(this).css('MozUserSelect','none');
}else if($.browser.msie){//IE
$(this).bind('selectstart',function(){return false;});
}else{//Opera, etc.
$(this).mousedown(function(){return false;});
}
});
});
$('.noSelect').disableTextSelect();//No text selection on elements with a class of 'noSelect'
});
非標準のCSSキーワード ser-select を使用してこれを解決しました。
.unselectable {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
}
JQuery UIを使用する場合、次のように簡単なテキスト選択を無効にできます。
$("body").disableSelection();
//function to be reused later
function clearSelection() {
var sel ;
if(document.selection && document.selection.empty){
document.selection.empty() ;
} else if(window.getSelection) {
sel=window.getSelection();
if(sel && sel.removeAllRanges)
sel.removeAllRanges() ;
}
}
$('p').click(clearSelection);
私は同じ問題を抱えており、これは私のために働いた:
li.noselection::selection {
background-color: transparent;
}
Chrome、Firefox、EdgeおよびIE 7から10でテストしました。
追伸これは「視覚効果」のみを無効にし、テキストは選択されたままです。あなたの問題が審美的なだけであれば、この解決策は100%機能するので、これが投票された理由です。
1.9.xより上のjQueryバージョンを使用するには
[〜#〜] html [〜#〜]
上記のHTMLマークアップ:
<ul>
<li>Go to the store</li>
<li>Pick up dinner</li>
<li>Debug crash</li>
<li>Take a jog</li>
</ul>
[〜#〜] js [〜#〜]
return falseの代わりにpreventDefault()を使用して、他のハンドラを殺さない
$('li').on('selectstart', function (event) {
event.preventDefault();
});
例: jsFiddle
$( 'selector' ).on( 'selectstart', 'selector', function( ) {
return false;
}).css( 'MozUserSelect','none' ).mousedown( function( ) {
return false;
});
セレクタを独自のものに置き換えます-このコードはすべてのブラウザで正常に機能します。 DOMに動的に挿入された要素に.on()を使用する
document.onselectstart = function() { return false; }
document.onmousedown = function() { return false; }
window.getSelection().empty()
選択範囲をすばやくフラッシュしますが、Chromeでは問題なく動作します。