【问题标题】:Duplicate input on click, insert before clicked element - jQuery单击时重复输入,在单击元素之前插入 - jQuery
【发布时间】:2016-10-27 10:47:41
【问题描述】:

我有这样的标记:

$('label.duplicate').click(function(e) {
        e.preventDefault();
        var _for = $(this).attr('for');
    
        $('input[name="' + _for + '"]').clone().insertBefore($(this));
      });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="input_one[]">
    <label class="duplicate" for="input_one[]">Add another car</label>

这不会重复或提供错误,所以我不知道为什么这不起作用?

【问题讨论】:

  • 它的工作...
  • 您的代码已经运行良好
  • 是的,我不确定是什么阻止了我的结局 - 我看到它在这里工作。离奇。
  • 标签是动态生成的吗?如果在页面中附加标签之前执行点击监听器,这可能是问题

标签: javascript jquery html clone


【解决方案1】:

它正在运行,但您需要等待 dom-structur 加载后才能运行代码。像这样把所有东西都放在documet.ready里面:

$(document).ready(function() {
  $('label.duplicate').click(function(e) {
    e.preventDefault();
    var _for = $(this).attr('for');

    $('input[name="' + _for + '"]').clone().insertBefore($(this));
  });
})

或者在页面上最后插入您的代码。在此处阅读更多信息:https://learn.jquery.com/using-jquery-core/document-ready/

【讨论】:

  • 是的,编辑后我看到它在这里工作。我已经准备好在文档中运行了。
【解决方案2】:
<input type="text" name="input_one[]">
<label class="duplicate" for="input_one[]">Add another car</label>

只需.duplicate 即可复制:

$(function(){ 
$('.duplicate').click(function(e) {
    e.preventDefault();
    var _for = $(this).attr('for');

    $('input[name="' + _for + '"]').clone().insertBefore($(this));
  });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多