AJAXでHTMLを取得した際、セレクタで要素を指定するとundefinedで取得されます。
なぜでしょうか?
JQuery 2.2.3
<!-- AJAXで取得するデータ --> <!DOCTYPE html> <html> <head> </head> <body> <span>span1</span> <table id="test-table"> <tr> <td>td1</td> <td></td> <td></td> <td><span>span2</span></td> </tr> </table> </body> </html> // JQueryで解析 var test1 = $("table tr", result).html(); // test1 == undefined var test2 = $("#test-table", result).html(); // test2 == undefined var test3 = $("body", result).html(); // test3 == undefined var test4 = $("span", result).html(); // test4 == undefined var test5 = $("td", result).html(); // test5 == "td1" var test6 = $("tr td", result).html(); // test6 == "td1" var test7 = $("tr", result).parent().html(); // test7 == "<tr><td>td1</td><td></td><td></td><td><span>span2</span></td></tr>"
同じような動作を確認できるサンプルを作成しました。
なおtest4の値がなぜ取れたのか不明です。。(取得できたのなぜ二つ目?)
<!DOCTYPE html> <html> <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <script type="text/javascript"> $(function(){ var result = '<html><head></head><body><span>span1</span><table id="test-table"> <tr> <td>td1</td> <td></td> <td></td> <td><span>span2</span></td> </tr></table></body></html>'; var test1 = $("table tr", result).html(); var test2 = $("#test-table", result).html(); var test3 = $("body", result).html(); var test4 = $("span", result).html(); var test5 = $("td", result).html(); var test6 = $("tr td", result).html(); var test7 = $("tr", result).parent().html(); console.log(test1); // test1 == undefined console.log(test2); // test2 == undefined console.log(test3); // test3 == undefined console.log(test4); // test4 == "span2" console.log(test5); // test5 == "td1" console.log(test6); // test6 == "td1" console.log(test7); // test7 == "<tr><td>td1</td><td></td><td></td><td><span>span2</span></td></tr>" }); </script> </head> </html>
回答2件
あなたの回答
tips
プレビュー