Используя JQuery, как мне нацелить элемент с атрибутом стиля в IE? - PullRequest
0 голосов
/ 03 марта 2011

С JQuery я нацеливаюсь на следующее:

<li style="margin-left: 15px;">blah<li>

с этим кодом:

$(".block-category-navigation li[style='margin-left: 15px;']").addClass('sub-menu'); 

Отлично работает в Firefox, но совсем не работает в IE.IE игнорирует селектор стиля?Во всяком случае, если так

Ответы [ 3 ]

5 голосов
/ 03 марта 2011

После проверки этого в консоли IE8 я обнаружил, что он превращает 'margin-left' в 'MARGIN-LEFT'.

В IE этот селектор будет работать:

$(".block-category-navigation li[style='MARGIN-LEFT: 15px']").addClass('sub-menu'); 

Вы можете использовать как селекторы верхнего, так и нижнего регистра, или использовать цикл для проверки атрибута стиля следующим образом:

$('.block-category-navigation li[style]').each(function() {
    $this = $(this);
    if ($this.attr('style').match(/margin-left: 15px/i)) {
        $this.addClass('sub-menu');
    }
});

ОБНОВЛЕНИЕ

Поскольку я не хочу давать вам код, который не работает, я настроил этот рабочий пример здесь: http://jsfiddle.net/YB7uV/6/

3 голосов
/ 03 марта 2011

Вы можете использовать css-атрибут marginLeft с методом each () ... но не уверен, что есть лучший способ

$(".block-category-navigation li[style]").each(function(){
 if($(this).css("marginLeft") == '15px')
    $(this).addClass("myclass");

});
0 голосов
/ 03 марта 2011

Нам нужно увидеть код, включающий тег ul, а также таблицы стилей, которые используют все стили.Скорее всего, в том, как вы обрабатываете свой CSS, а не в jQuery.Я скажу, что использование дефисов вызывает беспокойство, хотя, как я уже говорил, без полной картины трудно диагностировать.Поскольку вы добавляете класс с дефисом в имени, jQuery может ссылаться на этот класс как на свойство, а не на строку.Firefox немного более изящен в обработке Javascript, поэтому IE может просто игнорировать добавление классов, если присвоение имен отключено.Вы также можете попробовать изменить этот класс с sub-menu на submenu и посмотреть, будет ли IE лучше играть.

...