Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: IE и JQUERY

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
kvins
Отправлено: 13 Октября, 2013 - 14:49:23
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Подскажите почему этот код работает везде кроме IE , там он не скрывает элементы option

Смысл скрипта при загрузке проверять атрибут sel в теге option на совпадение и если его нет, то тег option должен быть спрятан

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. chech = $('.ssccccc :selected').text();
  3. sc =0;
  4. $('.ssccccc2').each(function() {
  5.  
  6. t = $(this).attr("sel");
  7.  
  8. if (chech != t) {
  9. $(this).css("display","none");
  10. } else {
  11. sc++;
  12. if(sc == 1) {
  13. $(this).attr("selected","selected");
  14. }
  15. $(this).css("display","block");
  16. }
  17. });
  18.  


-----
тута
 
 Top
IllusionMH
Отправлено: 13 Октября, 2013 - 15:13:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




kvins, ээээ прятать опшены - это что-то с чем-то
Нужно их удалять и добавлять обратно. Или это должен быть кастомный селект?
 
 Top
kvins
Отправлено: 13 Октября, 2013 - 15:16:50
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Дело в том что этот силект имеет настройки связанные с базой данных и я не хотел бы дергать базу каждый раз когда человек выбирает из первого списка, так как этот по счету второй идет и если атрибут первого выбраного из списка не совпадает со второым, то блок прячется.
(Добавление)
PS: Если вы работали с битрикс, то это кастомная выборка SKU товаров , в первом списке идет цвет, а во втором размер


-----
тута
 
 Top
DelphinPRO
Отправлено: 13 Октября, 2013 - 17:25:19
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




атрибут sel ко всему еще и не существует в спецификации. Улыбка используйте кастомные data-* атрибуты вкупе с html5 доктайпом


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
kvins
Отправлено: 13 Октября, 2013 - 18:24:19
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Разве проблема в атрибуте, как я знаю можно вешать любые атрибуты и разве они могут мешать нормальной работе в эксплорере ?

Т.е хотите сказать что использвовав на других атрибутах все заработает ?
Они как средство информации и ничего больше


-----
тута
 
 Top
esterio
Отправлено: 14 Октября, 2013 - 11:44:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Нужно следовать спеке. Именно поетому и придумали атрибут data-{name}
 
 Top
MAXUS
Отправлено: 14 Октября, 2013 - 12:48:15
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




Вставь в 7-ю строку:

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. alert("t = "+t+", chech = "+chech);
  3. alert("Тип t = "+typeof(t)+", тип chech = "+typeof(chech));
  4.  


Посмотри, что выводит. Могут не совпадать значения, могут не совпадать типы. В других браузерах это проканывает, а в ie, например, может быть критично.

Далее, если тут ничего не будет смущать, то после условия в 8-й строке добавь alert:

CODE (javascript):
скопировать код в буфер обмена
  1. alert("t != chech")


Если отработает, значит в условиях все верно и не работает конструкция

CODE (javascript):
скопировать код в буфер обмена
  1. $(this).css("display","none");


Попробуй замени ее на

CODE (javascript):
скопировать код в буфер обмена
  1. this.style.display="none";


Вообще, IE критично относится к типу переменной.
(Добавление)
CODE (javascript):
скопировать код в буфер обмена
  1. $(this).css("display","block");


Да, и еще... Option - это inline-block элемент, а не block.
 
 Top
esterio
Отправлено: 14 Октября, 2013 - 12:58:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




MAXUS пишет:
$(this).css("display","block");


Грамотнее
 
 Top
MAXUS
Отправлено: 14 Октября, 2013 - 13:02:39
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




esterio пишет:
MAXUS пишет:
$(this).css("display","block");


Грамотнее


Я предполагаю случай, если jquery косячит. Вдруг. Просто в случае с this.style.display jquery вообще не при чем...
 
 Top
esterio
Отправлено: 14 Октября, 2013 - 13:08:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




MAXUS пишет:
Я предполагаю случай, если jquery косячит. Вдруг. Просто в случае с this.style.display jquery вообще не при чем...

Вы колопали код jQuery чтобы говорить о ее косяках? думаю нет
(Добавление)
Так навскидку
CODE (html):
скопировать код в буфер обмена
  1. <span id="id1" style="display:none;">SomeText</span>

CODE (javascript):
скопировать код в буфер обмена
  1. document.getElementById('id1').style.display = 'block';

Что будет пры таком подходе?
Спойлер (Отобразить)
 
 Top
MAXUS
Отправлено: 14 Октября, 2013 - 13:25:50
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




esterio пишет:
MAXUS пишет:
Я предполагаю случай, если jquery косячит. Вдруг. Просто в случае с this.style.display jquery вообще не при чем...

Вы колопали код jQuery чтобы говорить о ее косяках? думаю нет
(Добавление)
Так навскидку
CODE (html):
скопировать код в буфер обмена
  1. <span id="id1" style="display:none;">SomeText</span>

CODE (javascript):
скопировать код в буфер обмена
  1. document.getElementById('id1').style.display = 'block';

Что будет пры таком подходе?
Спойлер (Отобразить)


При таком подходе span превратится в div.

Для того, чтобы этого не происходило, надо вообще не трогать display, а вешать на элемент дополнительный атрибут, например, dontshow и его ставить и убирать, а в css сделать правило на этот атрибут с display: none. Когда атрибут установлен, display: none, когда его нет display родной какой должен быть у элемента. И никакой jquery не нужен.
Дополнительный атрибут можно использовать в соответствии со спецификацией c data-dontshow. Тут разницы нет.

Так проще всего сделать триггер. Это уже опыт...

(Отредактировано автором: 14 Октября, 2013 - 13:27:29)

 
 Top
esterio
Отправлено: 14 Октября, 2013 - 13:33:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




А Ваш опыт подсказивает Вам что можно узнать стили который подставил сам браузер если не установлено CSS свойство? Так делает jQuery
 
 Top
MAXUS
Отправлено: 14 Октября, 2013 - 13:34:38
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




Цитата:
Вы колопали код jQuery чтобы говорить о ее косяках? думаю нет


ЗряУлыбка Но в данном случае я просто постарался учесть все возможные причины и отсеять их.
(Добавление)
esterio пишет:
А Ваш опыт подсказивает Вам что можно узнать стили который подставил сам браузер если не установлено CSS свойство? Так делает jQuery


Ну дак в случае с моим способом вообще не важно, кто, когда, в какой последовательности и какой стиль поставил на элемент. Этот стиль перепишется, а потом вернется обратно. И голову на этот счет греть не потребуется. Опыт в смысле много раз использовал и косяков не встречал.

Единственное, что надо сказать - это то, что эти два способа несовместимы. Т.е. если работать через атрибуты, а потом поменять у элемента display, то атрибуты работать перестанут потому что приоритет будет у внутреннего стиля.

(Отредактировано автором: 14 Октября, 2013 - 14:05:45)

 
 Top
kvins
Отправлено: 14 Октября, 2013 - 18:28:20
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Спс за ответы завтра опробую предложенные варианты так как более важные вещи пока остались


-----
тута
 
 Top
tuareg
Отправлено: 14 Октября, 2013 - 21:28:56
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Если я не ошибаюсь. (Не ошибаюсь Улыбка ) IE 8 точно не умеет стилизовать option
P.S Вот пытались Улыбка
http://www[dot]linkexchanger[dot]su/foru[dot][dot][dot]hp?f=5&t=917
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB