jquery 克隆指定输入项不起作用

jquery cloning specify input items doesn't work

我的目标是在输入部分中有一个克隆按钮,当我单击它时克隆整个部分,包括刚刚通过 jquery 输入的输入值。

<section class='sectionContent'>
<button onClick="clone_section(this)"></button>
<input type="text" name="someinput">
<input type="text" name="someinput">
<input type="text" name="someinput">
<input type="text" name="someinput">
<input type="text" name="someinput">
<input type="text" name="someinput">

<script type="text/javascript">
    function clone_section(this) {
        console.log($(this).find("input"));
    }
</script>

当我在函数内部进行控制台登录时,它给了我不同于我直接控制台的东西,比如

console.log('.sectionContent').find('input');

我想做的是取出所有输入值并 .clone() 整个部分,然后将所有输入值放入新部分。

有没有人有更好的主意?请指教,非常感谢!

不要在函数中使用保留字 this 作为 var:

function clone_section(theChosen) {
  console.log($(theChosen).find("input"));
} 

但是按钮没有输入 - 你可能是说

$(".sectionContent>button").on("click", function(e) {
  e.preventDefault(); // or have type="button"
  console.log($(this).closest("section").find("input"));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<section class='sectionContent'>
  <button>Click</button><br/>
  <input type="text" name="someinput"><br/>
  <input type="text" name="someinput"><br/>
  <input type="text" name="someinput"><br/>
  <input type="text" name="someinput"><br/>
  <input type="text" name="someinput"><br/>
  <input type="text" name="someinput"><br/>
</section>

使用 .nextAll("input")$(obj).parent().find("input")

请注意 this 是保留字,因此请使用以下内容:

function clone_section(obj) {
  console.log($(obj).nextAll("input"));
}

演示

function clone_section(obj) {
  console.log($(obj).nextAll("input"));
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section class='sectionContent'>
  <button onClick="clone_section(this)"></button>
  <input type="text" name="someinput">
  <input type="text" name="someinput">
  <input type="text" name="someinput">
  <input type="text" name="someinput">
  <input type="text" name="someinput">
  <input type="text" name="someinput">
</section>

稍微扩展了 mplungjan 的答案。

$(".sectionContent>button").on("click", function(e) {
  e.preventDefault(); // or have type="button"
  $(this).closest("section").find( 'input' ).clone().appendTo( $('.clonesHere') );
  $('<hr>').appendTo( $('.clonesHere') ); // just for visuals
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

<section class='sectionContent'>
  <button>Click</button><br/>
  <input type="text" name="someinput"><br/>
  <input type="text" name="someinput"><br/>
  <input type="text" name="someinput"><br/>
  <input type="text" name="someinput"><br/>
  <input type="text" name="someinput"><br/>
  <input type="text" name="someinput"><br/>
</section>

Clones here:
<section class='clonesHere'></section>