JQuery - 我在使用Clone()时遇到了一些问题

时间:2014-04-09 11:26:54

标签: jquery

我在JQuery中为标签创建了一个脚本,脚本目标是当你点击空格时,它会自动创建一个新标签。

但问题是,我想创建一个按钮来克隆我的表单,当我点击这个按钮时,它会克隆我的表单,但是当你尝试编辑标签时,标签只适用于最后一个表单从第一个创建的表单,你不能,因为scritpt不能识别。

我创建了一个jsfiddle来解释发生了什么

http://jsfiddle.net/8FDjy/

我正在使用此代码来克隆表单,而我只使用类

$(function(clone){
var template = $('.job .offer:first').clone(true);
    var offersCount = 1;
    window.addoffer = function(clone){
        offersCount++;
        var offer = template.clone(true).find(':input').each(function(){
            var newId = this.id.substring(0, this.id.length-1) + offersCount;
            this.name = this.id = newId; // update id and name (assume the same)
        }).end()
        .attr('id', 'att' + offersCount)
        .prependTo('.job');
    }
    $('.add').click(addoffer);
});

1 个答案:

答案 0 :(得分:0)

live已在jquery 1.8+中弃用并删除,请使用on委托事件来动态添加元素。

试试这个

  $('.job').on('keypress', '.txtlinks', function (e) { //Check if space was clicked, and create a new tag
 if (e.which == 32) {
     var tl = $('.txtlinks').val();
     if (tl) {
         $(this).val('').parent().before('<li class="links"><span><input type="hidden" value="' + tl + '" name="links[]" />' + tl + '</span><a style="cursor:pointer;" class="close">[x]</a></li>');


       }
   }
 });


 $('.job').on('click', '.close', function () {
    $(this).parent().remove();
 });


 $(function (clone) {
   var template = $('.job .offer:first').clone(true);
   var offersCount = 1;
   window.addoffer = function (clone) {
     offersCount++;
     var offer = template.clone(true).find(':input').each(function () {
         var newId = this.id.substring(0, this.id.length - 1) + offersCount;
         this.name = this.id = newId; // update id and name (assume the same)
     }).end()
         .attr('id', 'att' + offersCount)
         .prependTo('.job');
   }
  $('.add').click(addoffer);
 });

fiddle here