jQuery Code работает на Google Chrome, но не на Firefox, IE и даже Safari - PullRequest
0 голосов
/ 13 января 2010

Я написал этот код, и он прекрасно работает в Google Chrome, но когда дело доходит до Firefox и других основных браузеров, он даже не меняет ничего:

jQuery("div[style*='line-height:25px']").contents(":not(nodeType!='1',br)").wrap("<div style='margin-bottom:9px;line-height:normal;margin-top:4px'>");
jQuery("div[style*='line-height:25px'] br").remove();

Это может выглядеть немного странно, но я хочу решить действительно неприятную проблему, поэтому в любом случае позвольте мне дать вам технические характеристики системы:

  • jQuery 1.3.2 с методом noConflict(), чтобы избежать конфликтов с прототипом $
  • Scriptaculous 1.7.1_beta3
  • Прототип 1.5.1
  • И да, я использую функцию jQuery(document).ready(), чтобы действовать после того, как DOM будет готов.

Это библиотеки, также встроенные в страницу.

Для рекомендаций: Я не разрабатывал эту страницу и другие сотни страниц, подобные этой, и проблема в том, что они все статические и используют shtml, по крайней мере, для совместного использования некоторого общего кода. Но я не могу удалить ни одну из этих библиотек, потому что это означает, что мне придется редактировать много страниц, и это будет стоить мне недели. Поэтому на самом деле я ищу временные решения, подобные приведенному выше.

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

Частичный HTML:

<div style="font-size: 13px; line-height: 25px;">
  <!-- BULLETS MORE -->
  <div style="line-height: normal;">
    Fine quality, full grain pebble leather
  </div>
   Smooth Classic Napa leather construction
  <br />
   Lateral footprint with top access
  <br />
   Durable belt clip
  <br />
   Top flap with snap closure for added security
  <br />
   Soft velvet lining with light protective layer
  <br />
   Bottom push-through cutout for easy Motorola Droid removal
  <br />
   Simple Scandinavian rounded design
  <br />
   Sena craftsmanship and quality
  <br />
</div>

Ответы [ 4 ]

1 голос
/ 14 января 2010

Как насчет их немного переписать?

jQuery("div").filter(lineHeight).contents(nonElementNodes).wrap("<div style='margin-bottom:9px;line-height:normal;margin-top:4px'>");

jQuery("div").filter(lineHeight).find("br").remove();

function lineHeight() {
  return this.style.lineHeight == "25px";
}

function nonElementNodes() {
  return this.nodeType !== 1 || this.tagName !== 'BR';
}
0 голосов
/ 14 января 2010

Хлоп. jquery позволяет вам писать очень мощные запросы, но это не значит, что вы должны.

если у вас есть контроль над html, вы должны добавить несколько классов, где это необходимо, и заменить этот беспорядок на некоторые селекторы классов, он будет работать во всех браузерах и быстрее загружаться

0 голосов
/ 14 января 2010

Не используйте ' в селекторе, просто:

jQuery("div[style*=line-height:25px]")
0 голосов
/ 13 января 2010

Я не думаю, что ваш селектор содержания настроен правильно. Вы должны сделать что-то вроде:

jQuery("div[style*='line-height:25px']").contents(":not(br)").filter(function(){return this.nodeType != 1;}).wrap("<div style='margin-bottom:9px;line-height:normal;margin-top:4px'>");
jQuery("div[style*='line-height:25px'] br").remove();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...