here(「許可されたコンテンツ」)とhere(「ヒントとノート」に記載)のように、input
要素はDOMコンテンツを持つことが常に考えられます。別の入力の中に入力をネストする
私はいくつかの異なる入力要素の種類がレンダリングされ、javascriptで変更されたプロジェクトで作業しています(例:プレーンinput
テキスト要素とselect
)。その変更プロセスでは、隠されたinput
が、現在選択されている値を保持するこれらの要素の内部に配置されます。
だから、どうやらそれは別の入力要素(及び、その後、それを使用して)にinput
要素を追加するjQueryのを介して可能である:
function doIt() {
//clear children of parent input
$('#parentInput').children().remove();
//create new input and append it to the parent input
$('<input>').attr({
type: 'hidden',
id: 'testInput',
value: 'Test value inserted into nested test input'
}).appendTo($('#parentInput'));
//get value of new nested input and write it to output div
$('#output').html($('#testInput').val());
}
$('#doIt').on('click', doIt);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" value="Test" id="parentInput">
<button id="doIt">Do it</button>
<div id="output"></div>
かさえdiv
:
function doIt() {
//clear children of parent input
$('#parentInput').children().remove();
//create new input and append it to the parent input
$('<div id="testDiv">Test value inserted into nested test div</div>').appendTo($('#parentInput'));
//get value of new nested input and write it to output div
$('#output').html($('#testDiv').html());
}
$('#doIt').on('click', doIt);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" value="Test" id="parentInput">
<button id="doIt">Do it</button>
<div id="output"></div>
私の質問は次のとおりです:input
の要素にDOMコンテンツが含まれていないと、なぜjQuery経由で(つまり、プレーンなjavascript経由で、jQueryが「単なる」ラッパーとして)可能性がありますか?
https://www.w3schools.com/html/html_form_input_types.aspという入力はいくつかありますが、その中にはコンテンツを入れないものもあれば、コンテンツを入れるものもあります。リンクのリストを確認してください。 – MedAli
これは100%あなたの質問に関連しているかどうかはわかりませんが、[Shadow DOM](https://developers.google.com/web/fundamentals/getting-started/primers/shadowdom)をご覧ください。 –
ブラウザは、W3C/HTML仕様で特にサポートされていないとされる多くの動作をサポートしています。一般的に、これらの「機能」は、異なるブラウザ間で同じように動作しない可能性があります。あるいは、さらに悪いことに、ブラウザのパッチが動作を完全に変更する可能性があります。 – jbabey