JQuery経由でAタグのonClick属性の現在の値を取得することは可能ですか?
たとえば、私は持っています:
<a href="http://www.google.com" id="google" onclick="alert('hello')">Click</a>
Onclickコードを取得して、後で使用するために保存できるようにします(onclickイベントをしばらく変更する予定です)。
次のようなことをすることは可能ですか?
var link_click = $("#google").onclick;
または:
var link_click = $("#google").click;
コードの後半でそのコードを再適用できるようにするか、必要に応じてeval()できるようにしますか?
私はこれをやったことはありませんが、次のようになります:
var script = $('#google').attr("onclick")
mkoryak
は正しいです。
ただし、より新しいメソッド(onclick
を使用しない)を使用してイベントがそのDOMノードにバインドされている場合、このメソッドは失敗します。
それが本当に必要な場合は、 この質問 とその受け入れられた答えを確認してください。
乾杯!
あなたの質問をもう一度読みました。
これをお伝えしたいのですが、onclick
、onkeypress
などを使用してイベントをバインドしないでください。
addEventListener()
のような優れたメソッドを使用すると、次のことが可能になります。
実際にaddEventListener()
を使用する代わりに、$('selector').click()
のようなjQuery
ラッパーを使用できます。
乾杯!
これは私のために働く
var link_click = $('#google').get(0).attributes.onclick.nodeValue;
console.log(link_click);
$('#google').attr('onclick') + ""
ただし、Firebugは、これが関数 'onclick'を返すことを示しています。次の方法を使用して、後で関数を呼び出すことができます。
(new Function ($('#google').attr('onclick') + ';onclick();'))()
...またはRegExを使用してfunction
を削除し、その中のステートメントのみを取得します。
私はjQueryでこれを行う方法がわかりません...しかし、これは動作します:
var x = document.getElementById('google').attributes;
for (var i in x) {
if (x[i].name == "onclick") alert(x[i].firstChild.data);
}
ただし、Harshathが言ったように、イベントリスナーを使用した方が良いと思います。この関数を削除してonclickイベントに追加し直すのは面倒かもしれないからです。
達成しようとしていることを正確に説明してもらえますか?一般に、HTML要素からonclick属性を取得する必要はありません。また、要素自体のonclickを指定しないでください。代わりに、JQueryを使用してonclickを動的に設定します。
しかし、私が理解している限りでは、2つの異なるonclick機能を切り替えようとします。より良いのは、両方の状況を処理できるようにonclick関数を実装することです。
$("#google").click(function() {
if (situation) {
// ...
} else {
// ...
}
});