JavaScript иногда не работает с IE 7,8,9 - PullRequest
0 голосов
/ 02 ноября 2011

У меня есть этот код, который меняет URL каждый раз, когда пользователь нажимает кнопку на странице.Это прекрасно работает в Safari, Chrome, Firefox, но не в IE 7,8,9.В чем может быть проблема?

function setNewNavigationUrls(){
    var musicParameter;
    if (isMusicOn) {
        musicParameter='1';
    }else{
        musicParameter='0';
    }

    $("a[href='/']").attr('href', '/?music='+musicParameter);
    $("a[href='/collection-glamour-feeling']").attr('href', '/collection-glamour-feeling?music='+musicParameter);
    $("a[href='/collection-poetic-moments']").attr('href','/collection-poetic-moments?music='+musicParameter);
    $("a[href='/about.html']").attr('href','/about.html?music='+musicParameter);
    $("a[href='/contact.html']").attr('href', '/contact.html?music='+musicParameter);
}

Спасибо Шани

Ответы [ 2 ]

1 голос
/ 02 ноября 2011

Вы, вероятно, должны использовать ".prop ()" вместо ".attr ()" для установки "href" ваших <a> элементов.

$("a[href='/']").prop('href', '/?music='+musicParameter);
// ... etc. ...

В jQuery 1.6 семантикаиз attr () значительно изменился.Атрибут "href" становится свойством узла DOM для элемента, и поэтому его следует установить как свойство.Метод attr () теперь работает с атрибутами (через setAttribute () и getAttribute ()).Логические свойства, такие как «флажок» и «отключен», обрабатываются обратно совместимым образом в соответствии с jQuery 1.6.1.

0 голосов
/ 02 ноября 2011

Возможно, вы захотите попытаться заменить: if (isMusicOn) на if (typeof isMusicOn !== "undefined"), чтобы убедиться, что оператор оценивается правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...