0

これ$("#grid_modal div")[0].childNodes[0]により、特定の div 内のすべてのテキストがキャプチャされます。しかし、最後に追加.select()するとエラーが発生するのはなぜですか?

$("#grid_modal div")[0].childNodes[0].select()
//TypeError: Object #<Text> has no method 'select'

テキストにはメソッド選択がありませんか? どうすればこれを回避できますか?

4

2 に答える 2

0

jQuery Object[0]で行うとすぐに、実質的にjQuery環境からバニラのNodeに移行したことになります。これは、 jQuery のメソッドを再適用しないと使用できないことを意味します。

var node = $("#grid_modal div")[0].childNodes[0];
$(node).select();

これは [...] 指定された div 内のすべてのテキストをキャプチャします

の最初のノードの子である最初のノードを実際に取得しています。これがテキスト ノードであるという保証はありません。テキストが必要な場合は、使用する方が良いかもしれません#grid_modal divnode.textContent

于 2013-11-05T18:35:43.213 に答える
0

selectJavascript メソッドを呼び出そうとしています。

Input または TextArea 要素の場合、これにより要素がフォーカスされ、その中のすべてのテキストが選択されます。

inputただし、またはtextarea要素がありません。あなたは実際にテキストノードを持っています。div の最初の子要素を見つけようとしましたが、その前にテキスト ノードがあり、実行するとテキスト ノードが選択されますchildNodes

これを回避する簡単な方法は、代わりに jQuery を使用して全体の選択を行うことです。

$("#grid_modal div").eq(0).children().first()[0].select()

代わりに、バニラ Javascript を使用して実行できます。たとえば、childrenプロパティを使用できますが、これはすべてのブラウザーで使用できるわけではありません (特に IE<9)。

$("#grid_modal div")[0].children[0].select()
于 2013-11-05T18:41:26.690 に答える