jQuery .attr не работает в IE6 и IE7 - PullRequest
0 голосов
/ 13 октября 2010

Код javascript ниже примерно на половине пути на моей странице php, я не могу напрямую изменить переключатели с идентификаторами q_251_789 и q_251_790 на моей странице, к сожалению, поэтому я использую JS для добавления атрибутов к этим двум переключателям:

<script><!--
$("#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();
 };
//--></script>

В Chrome (dev), FF (3.6) и IE8 все это работает нормально.

В IE6 и IE7 следующие две строки скрипта не работаютработают , но не выдают какие-либо ошибки (в соответствии с инструментами IE dev -> отладчик JS):

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

Есть идеи, что я делаю неправильно?Или обходной путь для достижения той же цели?

1 Ответ

4 голосов
/ 13 октября 2010

Вместо установки обработчика события .attr() присоедините обработчики .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();
});
...