window.resize всегда запускается в IE без изменения размера - PullRequest
2 голосов
/ 12 февраля 2012

Старый заголовок: Включенный PHP не работает с JQuery и IE в функции, как ожидалось

У меня есть эти две функции:

Первая:

/* dynamic menue */
$("#wrapper div").not(":first").hide();
$("#nav p").click(function () {  
$('#wrapper div').eq($(this).index()).show().siblings().hide();
});

Вторая:

 var menue = function (menue) {
 if ($(window).width() < 680) {
    $("#nav").hide();
    $("#wrapper div").show();
 } else  {
    $("#nav").show();
    $("#wrapper div").not(":first").hide();
 }
};
$(document).ready(menue);
$(window).resize(menue);

Первая функция работает хорошо, а вторая гарантирует, что весь контент отображается без меню, если размер окна равенза 680px в противном случае он покажет нормальное состояние.Все отлично работает во всех браузерах.

Я создал скрипку для визуализации: http://jsfiddle.net/TFeWY/

Однако в IE это не работает так, как ожидается:Содержимое div генерируется с помощью php.В этом состоянии я вижу только первый div в IE и не могу переключиться на другой, но изменение размера работает хорошо.Однако, если я изменю содержание php с помощью html, все снова будет работать правильно.Еще интереснее: если я оставлю php нетронутым и просто удалим оператор else, он также будет работать.

Пока я не мог понять, погода это php контент (что я не думаю) или hide () в контексте содержимого php.

Что-то не так в функции для IE?(Проверено в IE8)

Редактировать:

Если я удаляю $ (окно) .resize (меню);это тоже работает.Так что, должно быть, что-то не так с самой функцией?

Я обнаружил, что функция window.resize всегда запускается в IE 8, поэтому я не вижу другие элементы div.

Как я могу что-то с этим сделать?

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

Хорошо, я наконец-то нашел ответ:

Собственно, вот пост на мой вопрос, который описывает, что здесь происходит: запуск события window.resize в Internet Explorer

Проверьте эту обновленную скрипку в IE 8. Это не работает, как я описал, потому что изменение размера вызвано:

http://jsfiddle.net/TFeWY/1/

Теперь вы можете работать с данным ответомпост, упомянутый выше.

Или вот исправление моего друга, которым я пользуюсь сейчас:

http://jsfiddle.net/TFeWY/2/

Очень интересное решениеЯ думаю.

1 голос
/ 13 февраля 2012

Возможно, реорганизуйте ваш код, например:

$(document).ready(function(){   
    $("#wrapper div:gt(0)").hide();
    $("#nav p").live('click',function () {  
    $('#wrapper div').eq($(this).index()).show().siblings().hide();
    }); 
    menue();
    $(window).live('resize',function(){menue()});
});

function menue() {
 if ($(window).width() < 680) {
    $("#nav").hide();
    $("#wrapper div").show();
 } else  {
    $("#nav").show();
    $("#wrapper div:gt(0)").hide();
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...