0


0

IE6およびIE7でjQuery .attrが機能しない

以下のJavaScriptコードは私のPHPページの約半分です。残念ながら、ページ上のIDがq_251_789とq_251_790のラジオボタンを直接変更することはできません。

<!--
$("#q_249_249").hide();
$("#q249").hide();
$("#q_251_789").attr("onClick","yesClicked();");
$("#q_251_790").attr("onClick","noClicked();");

function yesClicked()
{
    $("#q_249_249").show();
    $("#q249").show();
    $("#addressTable").show();
};

function noClicked()
{
    $("#q_249_249").hide();
    $("#q249").hide();
    $("#addressTable").hide();
 };
//-->

Chrome(dev)、FF(3.6)、およびIE8では、これはすべて正常に機能します。

IE6およびIE7では、次の2行のスクリプトは*動作しません*が、エラーを生成しません(IE開発ツール→ JSデバッガーによる):

$("#q_251_789").attr("onClick","yesClicked();");
$("#q_251_790").attr("onClick","noClicked();");

私が悪いことをしているというアイデア または、同じ目標を達成するための回避策はありますか?

1 Answer


4


イベントハンドラーhttp://api.jquery.com/attr/ [.attr()]を設定する代わりに、http://api.jquery.com/click/ [.click()]ハンドラーをアタッチしますこのような控えめな方法:

$("#q_251_789").click(yesClicked);
$("#q_251_790").click(noClicked);

または、次のような匿名関数を使用します(結合されたセレクターは単なるショートカットですが、無関係です)。

$("#q_251_789").click(function () {
    $("#q_249_249, #q249, #addressTable").show();
});
$("#q_251_790").click(function () {
    $("#q_249_249, #q249, #addressTable").hide();
});