これは実際にはあまり実用的な質問ではなく、より理論的な質問ですが、現在書いているコードに影響を与えるので、先に進んで質問します.
JQuery を使用して XML フィードを解析し、返された XML 要素に基づいてページ要素を作成しています。XML は JQuery オブジェクトに変換され、要素へのアクセスはすべてうまくいっています。
ある時点で、値を取得するときに、要素が存在するかどうかをテストし、 を使用してその内容を取得します.text()
。テキストをチェックする前に、セレクターが何かを返したことを確認するために注意してチェックしたかったのですが、何かおかしいことに気付きました。. . .text()
気にしないようです。セレクターによって返された JQuery オブジェクトが空の場合、それを使用.text()
すると返さ""
れます。
「カッコイイ」と思っていたら、 と で挙動が違うことに気が付きまし.html()
た.val()
。. . returnと.html()
returns (Firefox では . . . IE では、両方とも return )。null
.val()
undefined
undefined
やってみて:
var tempVal = $("#noWayThisIsAnElement");
window.console.log(tempVal.text()); // returns ""
window.console.log(tempVal.html()); // returns null (undefined, in IE)
window.console.log(tempVal.val()); // returns undefined
それで、誰かがこれの背後にある理由が何であるか知っていますか?
私が尋ねる主な理由は、彼らが(概念的に)同様の種類の値を探していることを考えると、「おっと、それはできない」という結果が同じになると思うからです。
.val()
3 つのデータ型のいずれかを返すことができるため、他の 2 つとは異なる可能性があることがわかると思いますが、それを削除しても、両方とも文字列.text()
を返し、それらの文字列は DOM ノードのコンテンツを表します。.html()
. . JQuery オブジェクトがノードへの参照を保持していない場合、どちらも同様の結果になると思われます。
ですから、今のところ 2 つの状況に応じて別の方法でコーディングすると思いますが、それまでの間、ここで何か洞察を持っている人はいますか?
更新: ケビン B は、定義されていない属性.val()
を探しているという点で、良い点を指摘しています (なぜ私がそれを考えなかったのか、実際には:D ) 。これは、この状況でvalue
の の動作とも一致しています。.attr()
.text()
ただし、との違い.html()
はまだ開いています。:)