Могу ли я оптимизировать это исправление двойного заполнения и полей IE6, используя вместо этого селекторы / фильтры jQuery?

#jquery #optimization #jquery-selectors #internet-explorer-6 #for-loop

#jquery #оптимизация #jquery-селекторы #internet-explorer-6 #для цикла

Вопрос:

Вот некоторый код, который я адаптировал для исправления проблемы двойного заполнения и полей в IE6:

 // Apply double padding amp; margin fix for IE6
if ($.browser.msie amp;amp; parseInt($.browser.version) < 7) { 

    var elements = self.common.$body.find("*").get();

    for (var i = 0, 
             len = elements.length, 
             $e = $(elements[i]), 
             cssFloat = $e.css("float"), 
             cssDisplay = $e.css("display"); 
         i < len; 
         i  ) {

        if (cssDisplay !== "none" amp;amp; 
           (cssFloat === "left" || cssFloat === "right")) { 
           $e.css("display", "inline"); 
        }

    };

}
  

Я подумал, что было бы быстрее выполнить какую-нибудь jQuery.filter() операцию с типом, где я бы начал с выбора только тех элементов, у которых не было display: none; и у которых было float: left; или float: right; . Тогда я мог бы перебрать их и просто применить display: inline; исправление.

Как вы думаете, это сработает? Если да, то как будет выглядеть этот селектор? Если нет или есть более быстрый способ, пожалуйста, дайте мне знать!

Заранее спасибо!

Комментарии:

1. Не было бы более практичным просто вручную добавить «display: inline» в CSS, где это уместно?

2. Это не вопрос, но, чтобы ответить вам, нет, не в моей текущей ситуации.

3. Причина в том, что я в ASP.NET среда, если JavaScript отключен, они все равно не попадают на мой сайт, и я бы предпочел не поддерживать display: inline; везде, где есть float: left; or float: right; в наших таблицах стилей. Этот метод и так быстрый. Я просто хотел узнать, есть ли способ отфильтровать элементы перед циклом с помощью того, что ищет мой оператор if, вместо того, чтобы перебирать ВСЕ элементы и проверять с помощью if.

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

5. Это проблема с «селекторами jQuery». Как кто-нибудь может помочь вам выбрать элементы, о которых мы мало знаем или вообще ничего не знаем?

Ответ №1:

Я решил создать тестовый пример на jsPerf.

Результаты, похоже, благоприятствуют моему оригинальному дизайну. По крайней мере, это отвечает на вопрос. Если у кого-нибудь еще есть другой метод, я хотел бы его увидеть.