javascript
  • jquery
  • onmouseover
  • 2016-04-14 16 views 0 likes 
    0

    divをJSを介してマウスでクリックできるようにするボタンで生成しました。手動リンクは不可能です。div内にカーソルがある場合にのみボタンをクリック可能にする

    Q1:マウスカーソルがdiv内にある場合のみ、ボタンをクリック可能にする方法はありますか?

    <div class='modal-body' style='padding-top: 10px'> 
    <a href='?hash="+hash+"' class='btn btn-success btn-xs cbut "+hash+"'><span class='glyphicon glyphicon-forward "+hash+"'></span></a> 
    </div> 
    

    は、imacrosのようリンクを次から自動スクリプトを防ぐために、私は今、ランダムでリンク名とクラスに「ハッシュ」変数を追加しました。 マクロスクリプトに*ワイルドカードを追加することでリンクをたどることができます。だから私はここでアイデアを抜けている。

    質問2:リンクフォローをマウスだけに制限する明確な方法はありますか?

    +1

    リンクをクリックすると、カーソルがそのリンクを含むdiv内にあることは明らかですか? – Bhumika107

    +0

    はい、明らかですが、マクロスクリプトはボタンをクリックせずにボタンのリンクをたどることができますが、これを制限したいと思います。 – Ivan

    +1

    しかし、マクロがhrefリンクをつかんでリダイレクトするのを避けるのはどうでしょうか? –

    答えて

    0

    は、私はそれが私のために働かせた方法です3)デフォルトでボタンを無効にする

    <span style="position:relative;"> 
    <input type="button" onclick="document.location.href='?hash'" class="btn btn-success btn-xs" value="❯❯"> 
    <div style="position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px; cursor: default; display: none;" id="catch"></div> 
    </span> 
    

    4)不可視の要素を削除するそのターゲットのdivの中から、無効なボタンの再稼動トリガー:

    $("#catch").mouseover(function (evt) { 
        $(this).hide().prev("input[disabled]").prop("disabled", false).focus(); 
    }); 
    

    マウスカーソルがその上に配置されていない限り、ボタンはもはや対象または活性化することができますこのように。 私はすでに現在のiMacroスクリプトを叩いてしまいました。

    LE:スポークが早すぎると、iMacrosがボタンを非常に簡単にターゲット設定できたようです。しかし、私はまた、私の機能のための単純なタイムアウトを追加することで、迅速な修正を思いついた:

    $("#catch").mouseover(function (evt) { 
        var $this = $(this) 
        setTimeout(function() { 
        $this.hide().prev("input[disabled]").prop("disabled", false).focus(); 
        }, 1000); 
    }); 
    

    私は本当に私を行くすべての入力ありがとうございました。

    1

    divのイベントハンドラをAddEventListenermouseover eventで追加します。

    イベントがトリガーされると、<の>リンクにhref attrを追加します。そして、mouseoutでattrを削除します。

    +0

    私の最初の考えは何ですか? –

    +0

    タッチデバイスはすでに制限されているため、ここでは該当しません。 – Ivan

    +0

    さて、タッチデバイスにはいくつかの問題があります... 「ダブルタップ」のようなものを作ることができますか?あなたのボタンの上に最初のdivを作ってください。クリックすると消えます。下にあるdiv(リンク付き)に2回目のonlickイベントを追加し、クリックするとhref attrをリンクに追加します(または直接ナビゲーションを開始します)。 –

    1

    は、おそらくこのような何かが動作する可能性はJavaScript onclick、またはjqueryのon

    $('div.modal-body').on('click',function(){ 
        window.location = "yourlink" 
    }) 
    
    +0

    しかし、マクロはdiv –

    +0

    をクリックすることができます。正確に、マクロはボタンにリンクします。私は最良の方法は、マウスカーソルが上記のdivの内側にある場合にのみ、クリックされるようにボタンを制限することだと思います。 – Ivan

    0

    を使用し、<a href inside it>使用しないでください。 基本的に、各クリックでカーソルの位置を見て、それが$('#demo-box')であるかどうかを確認します。それ以外の場合は、e.stopPropagation()および/またはe.preventDefault()とすることができます。

    マクロスクリプトが実際にマウスを動かすかどうかわからないため、これが機能するかどうかはわかりません。そうであれば、20-30msより短いクリックをスロットルまたはデバウンスすることができます。デバウンシングの詳細情報here

    1)目に見えない要素

    2の内側のボタンをラップ)のリンクを削除し、onclickイベント

    を経由して、それを追加しますので、ここで

    var $demo_box = $('#demo-box'); 
    var demo_box_width: $demo_box.outerWidth(); 
    var demo_box_height = $demo_box.outerHeight(); 
    var demo_box_offset = $demo_box.offset(); 
    
    $("#button").on('click', function(e) { 
        var relativeX = (e.pageX - demo_box_offset.left); 
        var relativeY = (e.pageY - demo_box_offset.top); 
    
        if (relativeX > 0 && relativeY > 0 && relativeX < demo_box_width && relativeY < demo_box_height) { 
         alert("X: " + relativeX + " Y: " + relativeY); 
        } 
    }); 
    
    関連する問題