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!');
    	});
    });
    

      

  • 相关阅读:
    用nginx解决前端跨域问题
    vue中router-link的详细用法
    leetcode 148 排序链表
    leetcode 146 LRU缓存机制
    leetcode 101 对称二叉树
    leetcode 84 柱状图中最大的矩形
    leetcode76 最小覆盖子串
    C++ map, unordered_map
    python随机函数
    丑数
  • 原文地址:https://www.cnblogs.com/hoosway/p/4121342.html
Copyright © 2011-2022 走看看