zoukankan      html  css  js  c++  java
  • Js为Dom元素绑定事件须知

    为异步加载的Dom 元素绑定事件必须在加载完成之后绑定:

    $('body').load('LearnClickBinding.ashx');
    $('a').click(function () { alert('I was clicked!'); });

    上面的绑定是无效的,因为异步加载需要时间,而在获取元素之前,早已执行了$('a').click();方法,所以绑定失败。

    正确的做法是,等待元素加载完后再执行 $('a').click();

    $('body').load('LearnClickBinding.ashx', function () {
    	$('a').click(function () {
    		alert('I was clicked!');
    	});

    });

      

    Js为Dom元素绑定事件只能在页面刷新之前,也就是该Dom元素重新加载之前有效。尤其是在异步加载Dom元素的时候,就有这个问题。

    $('body').load('LearnClickBinding.ashx', function () {
    	$('a').click(function () {
          alert('I was clicked!');
    	});
    
    	$('body').empty();
    
    	$("<a href='#'>Click Me!</a>").appendTo('body');
    });
    

    这种绑定方式也是失败的,因为绑定事件的a元素已经被empty了,后面append的a元素是没有事件的,所以点击按钮依然没有效果。

    正确的绑定方法:

    $('body').load('LearnClickBinding.ashx', function () {
    	$('a').click(function () {
    		alert('I was clicked!');
    	});
    
    	$('body').empty();
    
    	$("<a href='#'>Click Me!</a>").appendTo('body');
    
    	$('a').click(function () {
    		alert('I was clicked!');
    	});
    });
    

      

  • 相关阅读:
    ZOJ 3949 Edge to the Root( 树形dp)
    CCF201812-3 CIDR合并
    CF700E E. Cool Slogans
    BZOJ4552: [Tjoi2016&Heoi2016]排序
    BZOJ3238: [Ahoi2013]差异
    BZOJ4566: [Haoi2016]找相同字符
    Codeforces Global Round 1 A~F
    (HDU)1555-- How many days? (多少天)
    (HDU)1491-- Octorber 21st (校庆)
    (HDU)1465-- 不容易系列之一
  • 原文地址:https://www.cnblogs.com/hoosway/p/4121342.html
Copyright © 2011-2022 走看看