0

「イベントクリック」と「実行順序」について質問です。

ここに例を示します (HTML は外部の JavaScript によって生成されます)。

HTML :

<a href="#" id="comments-replybutton" onclick="alert('Action');return false;">Comment</a>​

JavaScript:

$(document).ready(function(){
    $('#comments-replybutton').click(function(){
        alert('2 attach event');
    });
});​

「コメント」をクリックすると、最初にjqueryのアクション(バインドイベント)が実行されます。

これは可能ですか?

4

3 に答える 3

1

を探していると思いますpreventDefault()
詳細はこちら

$(document).ready(function(){
    $('#comments-replybutton').click(function(e){
        e.preventDefault();
        alert('2 attach event');
    });
});​
于 2012-07-23T17:30:31.710 に答える
0
$(document).ready(function(ev){
    $('#comments-replybutton').click(function(ev){
        alert('2 attach event');
        ev.stopPropagation();
    });
});​

つまり、このように?

コメント後に編集

関数に名前を付けてバインドを解除することもできます。

var myEventHandler = function myFunction(ev){
    $(this).unbind(myFunction);
    alert('attach event 2');
    ev.stopPropagation();
}
$('#comments-replybutton').bind('click', myEventHandler); 
// $(something).click(fn) is just a shorthand to $(something).bind('click', fn);

編集2

document.getElementById('comments-replybutton')。onclick = ""などと言うだけで、元のイベントを簡単に削除できると思います。次の前にコピーすることで、再接続できます。

var original_event_handler = $('#comments-replybutton')[0].onclick;
$('#comments-replybutton')[0].onclick = "";
$('#comments-replybutton').click(original_event_handler);

少し汚いですが、私はそれを調べるのが面倒です:SpreventDefaultはここでは役に立ちません。

http://jsfiddle.net/C37ka/

于 2012-07-23T17:25:20.323 に答える
0

これを試して:

$(document).ready(function(){
    $('#comments-replybutton').unbind('click').click(function(){
        alert('2 attach event');
    });
});​

最後にインラインステートメントも実行する必要がある場合は、次のようなものが必要になります。

$(document).ready(function(){
    var initialEvent = $('#comments-replybutton')[0].onclick;
    $('#comments-replybutton').click(function(){
        alert('2 attach event');
    }).click(initialEvent);
});​
于 2012-07-24T06:29:23.093 に答える