単純なのですが、ハマったので記事にしてみます。
##jQueryでコロン付きのXMLエレメントが読めない
RSSなど、AJAX経由でXMLで読み出すことがあるかと思います。
その場合、たとえばこんなコード。
XML
<dc:title>タイトル</dc:title>
jQuery
$( xml ).find( 'dc:title' ).text();
これでは読み出せません。
##解決策
こうすれば読めます。
jQuery
$( xml ).find( 'title, dc\\:title' ).text();
##かんたんな説明
###コロン付きのタグについて
XML名前空間に基づいたものです。
詳しくはこちらをお読みください。
###jQueryではなぜ読めない?
コロンはjQueryではフィルタの役割を担っているため、そのままでは使えません。
###FirefoxとIEの場合
バックスラッシュ2つでコロンをエスケープします。
jQuery
$( xml ).find( 'dc\\:title' ).text();
###ChromeとSafariの場合
XML名前空間を使ったエレメントの場合、大域属性のほうを無視して読めるようです。
jQuery
$( xml ).find( 'title' ).text();
###すべてのブラウザで読む場合
"," で区切ることで、OR検索します。解決策と同じです。
jQuery
$( xml ).find( 'title, dc\\:title' ).text();