#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;
orfloat: right;
в наших таблицах стилей. Этот метод и так быстрый. Я просто хотел узнать, есть ли способ отфильтровать элементы перед циклом с помощью того, что ищет мой оператор if, вместо того, чтобы перебирать ВСЕ элементы и проверять с помощью if.4. Да, это не ваш вопрос, поэтому я опубликовал его в качестве последующего комментария, а не ответа. Рассматривали ли вы это решение ? Да, хотя я знаю, что это не отвечает на ваш первоначальный вопрос, вы можете счесть это полезным.
5. Это проблема с «селекторами jQuery». Как кто-нибудь может помочь вам выбрать элементы, о которых мы мало знаем или вообще ничего не знаем?
Ответ №1:
Я решил создать тестовый пример на jsPerf.
Результаты, похоже, благоприятствуют моему оригинальному дизайну. По крайней мере, это отвечает на вопрос. Если у кого-нибудь еще есть другой метод, я хотел бы его увидеть.