javascript - js中获取元素碰到的问题
阿神
阿神 2017-04-10 17:45:05
[JavaScript讨论组]

问题描述:动态创建了一个html结构,为什么window那个事件里的$('login')可以获取到,而下面的$('close')获取不到,就是close那个事件没反应,把这个事件放到btn1的click里才可以执行。

疑问:当我点击btn1的时候,通过浏览器的检查可以看到是已经生成<p id='close'>X</p>了,但为什么$('#close').click()却没有反应,但是window的事件中的#login就可以获取到,这是为什么呀?麻烦各位了!谢谢啦!

阿神
阿神

闭关修行中......

全部回复(2)
巴扎黑

有个小小的建议,下次直接贴代码,不要贴截图。这样大家都方便。

记住:如果不是代码控制,浏览器不会将同一行代码执行两次。
当浏览器执行这个语句时,

$('#close').click(function(){
    alert(123);
    });

DOM结构中并不存在`#close'这个元素,所以事件绑定失败。

为什么window那个事件里的$('#login')可以获取到

因为#login是在被创建后才去获取$('#login')的,不然你试试不点击btn1,调整窗口打下触发resize事件,看看$('#login')能不能获取?

而下面的$('close')获取不到

因为当执行$('#close').click(...)时,#close还没有创建,自然是获取不到

把这个事件放到btn1的click里才可以执行

放进btn1的click里可以执行,是因为当执行$('#close').click(...)时,#close已经被创建了。

tips:回调函数是作为参数传递给一个语句的,如果事件没有发生,回调函数肯定不会执行

怪我咯

这个应该涉及到了事件委托。
你把

$("#close").click(function{
    alert(123);
})

改成

$(window).on("click",'#close',function{
    alert(123);
})

试试,如果可以的话,我就不啰嗦了
你在仔细看下这篇文章。
http://yujiangshui.com/javascript-event/

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号