2011-10-10 77 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?