通过jquery选择器
问题描述:
有没有什么办法可以用独立于平台的紧凑平台(可能使用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
答
只需使用
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
}
答
您可以使用String.search()而不是String.indexOf()使您的模式不区分大小写(因为您不需要偏移量): var flagpos = html.search(/<\/a>/i);
什么阻止你从$html = $(html);
和使用jQuery Traversing API?