JavaScript ライブラリ総合質問所 vol.4
DOMでできることは
jqueryでもできるってことで間違いないの?
そりゃそうだろ
それは語弊がないか?
jQueryはDOMの全てをカバーしてるわけじゃない
例えばテキストノード操作に関してはかなり貧弱
テキストノードの操作って何が必要なんだ?
jQueryにはtextContentしかないからなあ
だから他に何が必要なんだ?
DOMにある機能で。
dataプロパティとか、テキストノードをreplaceChildとか
そもそも、jQueryではテキストノードを選択できないな
テキストノードは、idもclassも付けられないんだから
選択しようがないと思うが。
DOMでも選択はできないよね?
DOMでできることはchildNodesで列挙して行くことなわけで、
それと同じことならjQueryではcontents()で可能
DOMで選択はできないが、childNodesで列挙することはできる。
それをjQueryではcontents()で出来る。
だから「DOMでできることはjQueryでもできる」は間違いじゃないよ。
jQueryが便利すぎて別言語に思うこともあるけど、ただのライブラリなんだよな
>>854 > DOMでも選択はできないよね?
DOM ならテキストノードを参照できる
XPath の text() を使ってもいいし、要素ノードから firstChild や childNodes を辿ってもいい
>>854 > それをjQueryではcontents()で出来る。
で、
>>852をどうやって実現する?
jQuery の場合、要素ノード操作に特化しすぎてる感があるな
Node#firstChild, Node#lastChild, Node#nextSibling, Node#preventSibling 等の足りないAPIが多すぎる
まあDOM APIを使ったとしてもテキストノードは扱いづらいからな
<span>で囲めばいいだけの話だし、jQueryがテキストノード操作を捨てるのは妥当だと思うよ
「DOMでできることは jqueryでもできる」とは言えないだろうが、それは当たり前。
よく使う操作を楽にするのがライブラリの本領だから。
昔(1.2より前)はxpathのセレクタもサポートしていたみたいだけどね
でもテキストノードを選択出来たとしても、jQueryのメソッドが
要素と同じように適用できるとは思えないけれど
結局、jQueryではテキストノード操作は出来ないのか
テキストノードが選択できないといったり、テキストノード操作が出来るといったり、彼の主張は前言撤回が多すぎて説得力ゼロだな
>>862 > でもテキストノードを選択出来たとしても、jQueryのメソッドが
> 要素と同じように適用できるとは思えないけれど
当たり前じゃね? テキストノードっていうのは
要素じゃないんだから、それはそもそもDOMの問題だ。
DOM要素単位で扱うものなんだから
ノード操作が出来ないのは当たり前だろ
.text() で値は取れるな (.nodeValue が返される模様)
セットはできないけど
JavaScriptでマシン語が使えないの?って言ってるようなものだろ
jQueryのソース見ると、こんな感じでnodeTypeみて処理しているから、
何かしらの意味があってやってるんじゃないかな。
text: function( value ) {
return access( this, function( value ) {
return value === undefined ?
jQuery.text( this ) :
this.empty().each(function() {
if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
this.textContent = value;
}
});
}, null, value, arguments.length );
},
>>868 プリコンパイルされたライブラリとか欲しいね
まあプラグイン経由とかだったり署名付けたりとか色々と面倒そうだけど
DOM APIを使った事がなくてjQueryで何が出来るか知らない人が何でも出来るとほらを吹いただけか
>>869 それの jQUery.text(this) の所が取得側なんだけど
jQuery.text = Sizzle.getText;
ってなってて Sizzle.getText;では
} else if ( nodeType === 3 || nodeType === 4 ) {
return elem.nodeValue;
}
こういう部分があるね
これでテキストノードでも値が取れる
>>872 JavaScriptスレでも暴れていたし、jQuery信者をうざいと思ってる人は相当数いるんじゃない?
>>874 俺の知る限り、一人が過剰に拒否しているだけに見えるね。
878 :
877:2015/02/27(金) 17:51:27.26 ID:???
あ、なんか勘違いか。
>>876 反応するかは別として回答の質を落としてるのは間違いないな
それはjQueryを使わない回答をする奴がいないのが悪いんだろう?
jQueryを使った回答でもあるだけありがたいよ。
簡潔に書いた動く擬似コードだと思って
それをDOM APIに置き換えればいいだけの話だし。
一番うざいのが、jQuery信者がーとかいいだすやつ。
いつもあいつをきっかけに荒れる。
>>880 >>854のようなjQuery方面だけに知識が偏っていて間違った回答なら無いほうがマシです
質問しても変な方向に切り返してきていちいち訂正するのが面倒くさいです
無視したら誠実さを疑われるのでスルーするわけにもいかないですし
それから、jQuery以外の回答もjQuery信者がスレに張り付いているのでjQueryの回答だけ目立って見えるだけで普通にあります
たくさんの間違った知識で答えるjQueryの回答よりも確かな知識で回答してくれる一人の回答の方が何倍も価値があります
>>882 つまり、間違った回答じゃなければOKだよね?
逆に間違った回答なら、DOMでもNGだよね。
シンプルな質問
googoleメールや
twitterくらいあんとみたいな
動的なサイトなら
jqueryでバリバリ作れるってことだよね?
はい
一時的なものでした
888 :
Name_Not_Found:2015/03/07(土) 19:19:09.53 ID:gZ1CpGNy
document.getElementById("content").firstChild
これをjQueryのAPIを使った場合はどう書くんでしょうか?
$("content").children().first()
これだと#content以下の子要素を全部取得してから最初の子要素を返すので何か違う気がしました
document.getElementById("content").firstChild
$('#content :first-child')
890 :
Name_Not_Found:2015/03/07(土) 19:36:46.46 ID:gZ1CpGNy
高速化のためにobj = $("#content")みたいにして使いたいんですけど
セレクターに指定するしか方法ないですよね
>>890 そんなことやっても、
一回あたり0.1ミリ秒未満しか高速化出来ないけど、
その処理何回実行されるの?
893 :
Name_Not_Found:2015/03/07(土) 20:12:53.72 ID:gZ1CpGNy
IE9以上で動けばいいのでセレクターで取得するようにします
質問を無視しないでください。