Jquery克隆性能问题

时间:2014-02-05 13:53:49

标签: jquery

我有下面的代码工作正常,除了一些延迟。当第一次在浏览器(IE9)中打开应用程序然后立即点击addAnotherCard按钮时,它没有立即响应。至少需要8-10秒。我暂停10秒,然后点击它然后工作。

我也观察到,我点击了大约4次直到克隆,然后我已经验证了cosole.log并且vriables正在增加到6但是克隆只在屏幕上显示一次。点击后,我可以看到每个部分和控制台日志为7,8,9等。所以我的初始点击(1,2,3,4和5)都消失了。

这是原始代码和之前的帖子,包括JSFiddle。

$('#AddCC').click(function () {

uniqueId++;

var container = $("#CCcontainer"),
    hidden = $("#hiddenStoredPanelsArray"),
    storedPanels = hidden.length ? $.parseJSON(hidden.val()) : null,
    copyDiv = $("#CCPanel").clone(),
    divID = "CCPanel" + uniqueId,
    removeID = "RemoveCard" + uniqueId;

console.log(storedPanels);
storedPanels.push(uniqueId);
hidden.val(JSON.stringify(storedPanels));
console.log(storedPanels);

copyDiv.attr('id', divID);

container.append(copyDiv);
container.append("<div id =" + removeID + " ><div class =\"form-group col-sm-10\"></div><div class =\"form-group col-sm-2\"><button id=\"btn" + removeID + "\" type=\"button\" class=\"btn btn-warning form-control\">Remove Card</button></div></div>");

$('#' + divID).find('input,select').each(function () {
    $(this).attr('id', $(this).attr('id') + uniqueId);
});

$("#" + removeID).find("button").on("click", function () {
    var id = parseInt($(this).attr("id").replace("btnRemoveCard", "")),
        hidden = $("#hiddenStoredPanelsArray"),
        storedPanels = hidden.length ? $.parseJSON(hidden.val()) : null,
        index = storedPanels == null ? -1 : storedPanels.indexOf(id);

    console.log(storedPanels);
    if (index > -1)
        storedPanels.splice(index, 1);
    console.log(storedPanels);

    container.find("div[id$='" + id.toString() + "']").remove();
    hidden.val(JSON.stringify(storedPanels));
});
});

DEMO

How to find attribute of parent div

有人可以帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:0)

下面的代码解决了这个问题。

if(!(window.console && console.log)) {
 console = {
  log: function(){},
  debug: function(){},
  info: function(){},
  warn: function(){},
  error: function(){}
  };
}