2011-10-10 11 views
1

コンパクトなプラットフォームに依存しない方法で(おそらくjqueryを使用して)innerHTMLで動作する次のコードを書く方法はありますか?セレクタvia jquery

IEの名前はinnerHTMLでは異なる場合がありますので、それを処理するには2つの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.find('span.' + j).length > 0) { 
    // whatever 
} 
if (!toggleFlags[j] || child.innerHTML.toUpperCase().indexOf('<SPAN CLASS=' + j.toUpperCase() + '>')) 

は、さらに別の全く異なるアプローチがHTML(むしろ、再構成、または)生を介した要素を探して停止し、そしておそらく:-)あなたの質問のポイントだった(セレクターを使用することです

1

String.indexOf()の代わりにString.search()を使用して、パターンを大文字と小文字を区別しないようにすることができます(オフセットは不要なため)。 var flagpos = html.search(/<\/a>/i);

$html = $(html);とjQuery Traversing APIを使用することを止めていることはありますか?