2011-06-27 59 views
0
if ($(".productpage .description").html() != null) { 

    var textToHide = $('.productpage .description').html().split('<br class="breakHere">')[1]; 
    var visibleText = $('.productpage .description').html().split('<br class="breakHere">')[0]; 
} 

在Firefox和IE和Chrome中很好用,但textToHide和visibleText未定義。我錯過了什麼?由於jquery/javascript - 簡單拆分()問題

+2

更好地添加您的HTML;) – Nathan

+1

您是否可以粘貼一個示例html。你究竟在做什麼,導致它感覺好像還有更好的方法來處理這個問題...... – Niklas

+0

你應該緩存你的選擇器的結果。 '$('。productpage .description')'不會特別快,特別是在IE 7和IE 6中。將結果存儲在一個可以重用的變量中,並且性能會提高。 –

回答

1

查看$('.productpage .description').html(),你可能會得到<br />

+0

發現了問題: 出於某種原因,IE將其改爲
瀏覽器只是一個緩存的問題。謝謝你的幫助 – y0han

1

使用split()對HTML是不是一個好主意恕我直言 - 它太脆弱,並有可能遭受同樣的問題,使用正則表達式的反對HTML。

假設你正在試圖分裂是與<br>元素中的所有兄弟姐妹的元素,試試這個:

var $el = $('.productionpage .description'); // find the element 
var $br = $('br.breakHere', $el);   // find the BR inside it 

var $vis = $br.prevAll();    // contains everything before the break 
var $hide = $br.nextAll();   // contains everything after the break 

注意,這會給你含有這些元素,而不是他們的HTML文本的jQuery對象。