【问题标题】:After adding a new element in the DOM, the element does not recognize old script在 DOM 中添加新元素后,该元素无法识别旧脚本
【发布时间】:2013-11-13 14:00:50
【问题描述】:

我有一个问题。在DOM中添加一个新元素后,该元素无法识别旧脚本和本文档中的相同功能,如何解决这个问题?如何重新加载脚本

<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body>
<div id='content'>Content.....</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" ></script>
<script src='js/script.js' type='text/javascript'></script>
</body>
</html>




//          script.js         //

$('#content').click(function(){
    $('body').append('<div id="apended">Click me!</div>');
});


$('#apended').click(function(){
    alert('click!');
});

【问题讨论】:

    标签: javascript jquery dom append


    【解决方案1】:

    当您使用.on('click', function (e) {}) 函数时,它仅适用于现有元素。要处理所有选择器元素上的点击事件,即使对于将来要添加的元素,您也可以使用以下函数之一:

    $(document).on('click', "#appended", function (e) {
        // some code code
        alert('click!');
    });
    

    或:

    $("body").delegate("#appended", "click", function () {
        // your code goes here
        alert('click!');
    });
    

    有关更多信息,请阅读有关Understanding Event Delegation的文章

    【讨论】:

      【解决方案2】:

      你可以使用代替点击功能:

        1.live(old version)
      
        2.delegate
      
        3.on
      

      但是,如果你想使用点击与委托功能的不变性:

      var myFn=function(e){
       if(e.target.id=='apended'){
              alert('click');
         }
      
      }
      
      $(document).click(myFn)
      

      演示:http://jsfiddle.net/abdennour/7cyjV/

      【讨论】:

        猜你喜欢
        • 2021-04-17
        • 2011-07-29
        • 2012-01-07
        • 2011-04-22
        • 2018-01-21
        • 1970-01-01
        • 2020-01-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多