37

たくさん<div>のテキストが入った があります。これには、 jQuery を使用し<div>たイベントもあります。.click()

私が抱えている問題は、.click()テキストを選択/強調表示するときにトリガーされることです。マウスを数秒間押したままにしてから離すこともできます。

問題を示す JSFiddle は次のとおりです: http://jsfiddle.net/ym5JX/

私が期待する動作は、テキストの強調表示が要素をクリックすることと同じではないということです。

4

3 に答える 3

79

これclickは、 a の後に a がmousedown続くためmouseupです。私の提案は、ハンドラーgetSelectionの内部をチェックすることです。click設定されている場合は何かを選択しており、それ以外の場合は単にクリックしただけです。

$('#click').click(function() {
    var sel = getSelection().toString();
    if(!sel){
        alert("clicked");
    }
});​

デモ: http://jsfiddle.net/ym5JX/3/

于 2012-04-30T20:23:42.633 に答える
8

コメントに投稿したように、mosuedown + mouseup = clickこれはまさに強調表示の機能です。これには回避策があります。以下を参照してください。

var isClick = 0;
$('#click').click(function() {
    if (isClick == 1) {
        alert("clicked");
    }
}).mousedown(function () {
    isClick = 1;
}).mousemove(function () {
    isClick = 0;
});

デモ

于 2012-04-30T20:24:41.727 に答える
2

jsFiddle: http://jsfiddle.net/ym5JX/8/

$('#click').click( function()
{
    if ( getSelection() == "" )
    {
        alert("clicked");
    }
});
于 2012-04-30T20:24:44.310 に答える