无法定位在函数中创建的元素,在另一个函数中 - Jquery

时间:2016-05-15 17:39:46

标签: jquery

这是我的Jquery代码:



$(document).ready(function() {

  $("#accordion").accordion();

  $("#addition").click(function() {

    var folders = $(".folder").length;
    var count = (1 + folders);
    var folderName = prompt("Please enter folder name");
    var addFolder = ("<div class=folder> </div>");
    var addFolderImg = '<img class=folderImg src="folder-icon.png">';
    var addFolderName = ("<h3 class=foldName>" + folderName + "</h3>");
    var addFolderMenu = ("<div class=folderMenu></div>");


    if (folders == 0) {

      $("#addition").after(addFolder);
    } else {
      $(".folder").last().after(addFolder);
    }

    $(".folder").last().append(addFolderImg);
    $(".folder").last().append(addFolderName);
    $(".folder").last().append(addFolderMenu);

    $(".folderMenu").hide();

  });


  $(".folderImg").click(function() {

    $(this).siblings(".folderMenu").toggle();

  });

});
&#13;
&#13;
&#13;

出于某种原因,我尝试在.folderMenu上切换的最后一个函数只有在第一个函数中移动整个动作时才有效,尽管不是很完美。在尝试定位通过jquery创建的任何html元素时,我遇到了这个问题。感谢您的时间和精力!

2 个答案:

答案 0 :(得分:0)

而不是使用$(".folderImg").click(function() {});尝试使用$(".folderImg").on('click', function() {});这将适用于动态添加的元素。

答案 1 :(得分:0)

您必须在第一部分中运行第二部分。您的代码目前将以这种方式执行:

  1. 将用户点击元素#accordion
  2. 时绑定一个函数
  3. 将函数绑定到用户单击现有.folderImg元素时
  4. 用户点击#accordion:创建一个新的.folderImg元素
  5. 新的.folderImg元素将不会自动应用在步骤2中完成的绑定,因为在您执行绑定时它不存在。绑定某些内容时,将其绑定到现有元素,而不是将来的元素。