0

私は FireBug で jQuery をデバッグしているだけで、戻り値について疑問に思っています

$('.a-selector').attr('onclick');

であることが判明しましたが、onclick(event)以前にいくつかのコードを読んだことがあり、作成者はそれを次のように使用しています。

$('.a-selector').attr('onclick').replace(..., ...);

つまり、文字列オブジェクトとして扱うことができます。しかし、このように使用するとエラーが報告されます。

私のjQueryのバージョンは1.5.2です。onclickしたがって、jQuery が API を変更する時期と、HTML で定義されたイベントを変更する最善の方法は何か疑問に思っています。

4

3 に答える 3

3

jQuery.attr('onclick')関数がイベントオブジェクトを返すのはいつですか?

jQuery < 1.6。これは、1.6 より前の.attr()バージョンでは、適切と思われるプロパティと属性の取得が混在していたためです。新しいバージョンでは、その魔法のレイヤーが削除され、属性 ( .attr) とプロパティ ( )を取得するための適切なメソッドが用意されています.prop

これは、上記を示すフィドルです。

ps。ところで、これはイベント オブジェクトを返すのではなく、イベント ハンドラとして機能する関数オブジェクトを返します。=]


また、2 つの補足事項: jquery が実行可能な場合は常に最新バージョン (現在は 1.8.3) にアップグレードする必要があります。これには、より多くの機能、優れたパフォーマンス、および多くのバグ修正が含まれています。

onclickまた、jQuery を使用している場合は、sを実際に使用するべきではありません。これは、構造 (html) と動作 (js) を分離する Web 2.0 標準に.on()反します。 )、および.bind/ .delegate/.live古いバージョンの場合。

于 2012-12-18T13:20:15.580 に答える
1

ある要素の onclick 属性の値を変更したいとします。

$('.a-selector').attr('onclick',''); // leave 2nd parameter blank if you want to remove its value

また

$('.a-selector').attr('onclick','myfunc()');
############################### 編集

以下のように関数を定義できます。

<script>
    function myfunc(){
        // Do stuff here
    }
</script>
于 2012-12-18T12:34:56.260 に答える
0

クリックイベントをリセットする可能性はありますか?

$('.a-selector').unbind('click').click(function() {
    // new function
});

JavaScriptコードのテキストを置き換えることは、通常、JavaScriptがすべきことではありません。もっと良い解決策があると思います。

于 2012-12-18T12:33:41.403 に答える