4

こんにちは、興味深い質問があります

このような要素の onclick イベントをコピーすることは可能ですか

$('#ElementId').attr('OldOnClick',$('#ElementId').attr('OnClick'));

これを行う方法があれば、私を指導してください。

onclickある時点でフォームに存在するすべての要素のクリックイベントを無効にしようとしており、他の時点でそれらを回復する必要があるため、他の属性名でそれらを保存しようとしています

4

6 に答える 6

5

はい、ハンドラ関数にアクセスできます。jqueryでそれを行う方法は次のとおりです。

$('#specialbutton').click(function(){ console.log("peaches");};

var handlerFunction = $('#specialbutton').data("events").click[0].handler;

$('#specialbutton').click(); // "peaches"
handlerFunction(); // "peaches"

次に、次のように別の要素に割り当てます。

$('#otherelement').click(handlerFunction);
$('#otherelement').click(); // "peaches"
于 2012-10-20T12:09:46.263 に答える
0

下から2行目が抜けているようです。あなたはコピーをしている間に動きをしたいと思うでしょう。

$('#ElementId').attr('oldonclick', $('#ElementId').attr('onclick') )
               .removeAttr('onclick');
于 2012-10-20T13:27:10.427 に答える
0

以下は、要素のデータ内の「onclick」ストアを削除し、後でデータから使用できるようにします。Aタグの使用例

デモ http://jsfiddle.net/u4eVW/1/

/* remove "onclick" and store */
$('a').each(function() {
    var onclick = $(this).attr('onclick')
    $(this).data('oldClick', onclick)
    $(this).removeAttr('onclick')

})

/* initialize handlers from data */
$('a').click(function() {
        eval($(this).data('oldClick'))
 }) 

個々の「onclick」内で何かを変更したい場合は、属性値を文字列として扱い、正規表現メソッドを使用して変更する必要があります。

<a href="#" onclick="alert('foo')"> Link 1</a>

var onclick=$(selector).attr('onclick').replace('foo', 'bar')
于 2012-10-20T13:33:50.120 に答える