2010-01-13 4 views
0

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

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
  • Prototype 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> 
+0

Можете ли вы дать нам выход всего HTML (цензура содержимого/исключая изображения там, где это необходимо), чтобы мы могли играть с ним? –

ответ

1

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

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

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

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(); 
+0

Это тоже не сработало. И 'nodeType = 1' разрешено использовать с строкой Selector. Вот пример: http://tinyurl.com/ycanhl2 – Tarik

0

' Dont использовать в селекторе, просто:

jQuery("div[style*=line-height:25px]") 
+0

Просто сообщите, что это не решение, потому что даже jQuery рекомендует использовать '' ', и он не будет работать с этим путем :) – Tarik

0

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

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

Смежные вопросы