2011-10-10 104 views
1

有沒有什麼辦法可以用獨立於平臺的緊湊平臺(可能使用jquery)編寫下面的代碼來處理innerHTML?通過jquery選擇器

問題是IE中的名字標記在innerHTML中的不同情況下,所以我需要兩個if子句來處理它。 toLowerCase對於報價沒有幫助。

var flagpos = html.indexOf('</a>') 
if (flagpos == -1) flagpos = html.indexOf('</A>') 

html = (flagpos >= 0) ? 
    '<span class="' + html.substr(flagpos + 4). 
    replace(/^\s*|\s*$/, ''). 
    replace(/ /g, '"></span><span class="') + 
    '"></span>' + res + ' ' + html.substr(0, flagpos + 4) : res + ' ' + html 

- 或 -

if (!toggleFlags[j] || 
    child.innerHTML.indexOf('<span class="' + j + '">') >= 0 || 
    child.innerHTML.indexOf('<SPAN class=' + j + '>') >= 0) continue 

回答

0

只需使用

var whoCares = child.innerHTML.toUpperCase(); 

那麼你可以隨時以大寫字母標記名稱進行比較。 (或者,使用「.toLowerCase()」代替)。當然這會將全部的字母字符轉換爲大寫(或小寫,視情況而定),因此您必須這樣做:

if (!toggleFlags[j] || child.innerHTML.toUpperCase().indexOf('<SPAN CLASS=' + j.toUpperCase() + '>')) 

另一種完全不同的方法是停止尋找通過原始(或者更確切地說,重組)HTML元素,並使用一個選擇器(這可能是你的問題:-)點:

if (!toggleFlags[j] || child.find('span.' + j).length > 0) { 
    // whatever 
} 
1

您可以使用String.search()而不是String.indexOf()使您的模式不區分大小寫(因爲您不需要偏移量): var flagpos = html.search(/<\/a>/i);

什麼阻止你從$html = $(html);和使用jQuery Traversing API?