插入jQuery后如何更新/刷新DOM项目

Eff*_*mas 6 javascript tags jquery

我试着弄清楚如何在使用insertBefore函数jQuery后更新元素LI.

问题是在向UL添加任何新元素后,我无法删除相同的元素,(使用emailTagRemove).

请参阅演示以查看问题:http: //jsfiddle.net/HsRfH/

<div class="content"> 
    <span class="">Please, insert one or more emails: </span> 
    <br />
    <ul id="ulEmailsCotacao" class="ulEmailsCotacao">
        <li class="liEmailTagNew">
            <input type="text" class="emailInputTag" name="" value="" />
        </li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)
  //if enter, tab or space, add new value
  $('.emailInputTag').keydown(function (e) {
      var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
      if (key === 13 || key === 9 || key === 32) {
          addEmail();
      }
  });

  addEmail = function () {
      var email = $('.emailInputTag').val().trim();
      $('<li class="liEmailTagChoiced">' + email + '<a id="del" class="emailTagRemove">x</a></li>').insertBefore('.liEmailTagNew');
      $('.emailInputTag').val("");
  };

  $('.emailTagRemove').click(function () {
      var email = $(this).parents("li");
      email.remove();
  });
Run Code Online (Sandbox Code Playgroud)

dsg*_*fin 15

由于要动态添加/删除元素,您需要为此使用事件委派:

 $('.content').on('click', '.emailTagRemove', function () {                
      var email = $(this).parents("li");
      email.remove();
 });
Run Code Online (Sandbox Code Playgroud)

.content,因为它比使用更有效,因为选择document在这种情况下.

jsFiddle在这里

  • +1不使用`document`. (3认同)