こんにちは、興味深い質問があります
このような要素の onclick イベントをコピーすることは可能ですか
$('#ElementId').attr('OldOnClick',$('#ElementId').attr('OnClick'));
これを行う方法があれば、私を指導してください。
onclick
ある時点でフォームに存在するすべての要素のクリックイベントを無効にしようとしており、他の時点でそれらを回復する必要があるため、他の属性名でそれらを保存しようとしています
こんにちは、興味深い質問があります
このような要素の onclick イベントをコピーすることは可能ですか
$('#ElementId').attr('OldOnClick',$('#ElementId').attr('OnClick'));
これを行う方法があれば、私を指導してください。
onclick
ある時点でフォームに存在するすべての要素のクリックイベントを無効にしようとしており、他の時点でそれらを回復する必要があるため、他の属性名でそれらを保存しようとしています
はい、ハンドラ関数にアクセスできます。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"
下から2行目が抜けているようです。あなたはコピーをしている間に動きをしたいと思うでしょう。
$('#ElementId').attr('oldonclick', $('#ElementId').attr('onclick') )
.removeAttr('onclick');
以下は、要素のデータ内の「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')