为什么捕捉不到单机事件???

palljs001 2015-07-09 10:29:48
1、指定了a元素的id,但下面的js代码确捕获不到 它的单机事件,设断点进不去,这是怎么回事??? 它是block,有点击到啊。
<li><a id="bt-cancel" class="">取消</a></li>

$('#bt-cancel').click(function(){
$('html, body').removeClass('wrap');
$('#ordersbox').hide();
});

发生这种一般情况是为什么??? 是因为事件有冲突吗?

2、
(1)点击$('.icon-share') 向一个Div元素中输出一段HTML内容。HTML内容中有一个”<a class="icon-close" id="lastname" href="#"></a>“,它是一个按钮。
$('.icon-share').click(function(){
window.scrollTo(0,0);
$('html, body').addClass('wrap');
$('.msg-box').html('<h4>分享到</h4><a class="icon-close" id="lastname" href="#"></a> <ul class="clearfix"> <li><a href="#"><img src="images/share-wx01.png" ></a> <span>微信</span> </li> <li><a href="#"><img src="images/share-hyq01.png" ></a> <span>朋友圈</span></li> <li><a href="#"><img src="images/share-wb01.png" ></a><span>微博</span></li> </ul>');
$('.msg').show();
$('.side').hide();
});

(2)获取后来Jquery输出的HTML代码的a元素,给它绑定单击事件,但这时按钮的单击事件确不会被触发。
$('#lastname').click(function(){
$('html, body').removeClass('wrap');
$('.msg').hide();
$('.side').show();
});
点击 a 元素单击事件不会被触发,是因为Jqeury并没有获取到后来输出的HTML文件吗???

这时候如果要获取到后来输出的a元素应该怎么做???
因为这个弹窗的格式是通用的,但是其中的HTML内容有不同。后来输出的HTML的元素也要被点击。
...全文
155 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
usecf 2015-07-10
  • 打赏
  • 举报
回复
页面加载完以后,动态添加的元素你这样写时没法给他绑定事件的,.click等同于bind('click',function(){}),只能给一开始就有的元素绑定事件,on可以给所有元素绑定事件,貌似jquery中bind也是通过on来实现的 你也可以在html中增加onclick事件,然后调试,断点就可以进去
无敌兔斯基 2015-07-10
  • 打赏
  • 举报
回复
用$().live("click",function(){})来绑定后面添加的元素事件
palljs001 2015-07-10
  • 打赏
  • 举报
回复
引用 10 楼 gy127132060 的回复:
如果楼主外层加了$(document).ready(function(){});还是不能click,,,,那就是楼主没有引入jquery.js文件。。。
$(function(){})加了这个可以吧。用的是zopto.js。和Jqeury一样的。
香蕉猪 2015-07-10
  • 打赏
  • 举报
回复
如果楼主外层加了$(document).ready(function(){});还是不能click,,,,那就是楼主没有引入jquery.js文件。。。
palljs001 2015-07-10
  • 打赏
  • 举报
回复
$("#lastname").live( "click", function() { $('html, body').removeClass('wrap'); $('.msg').hide(); $('.side').show(); }); 这样写也没有作用。
palljs001 2015-07-10
  • 打赏
  • 举报
回复
引用 7 楼 starrycheng 的回复:
[quote=引用 3 楼 lixin1412 的回复:] 页面加载完以后,动态添加的元素你这样写时没法给他绑定事件的,.click等同于bind('click',function(){}),只能给一开始就有的元素绑定事件,on可以给所有元素绑定事件,貌似jquery中bind也是通过on来实现的
.click等同于bind('click',function(){}),只能作用于第一次dom解析的元素。 用.bind()的代价是非常大的,它会把相同的一个事件处理程序hook到所有匹配的DOM元素上 不要再用.live()了,它已经不再被推荐了,而且还有许多问题 .delegate()会提供很好的方法来提高效率,同时我们可以添加一事件处理方法到动态添加的元素上。 我们可以用.on()来代替上述的3种方法 http://www.cnblogs.com/moonreplace/archive/2012/10/09/2717136.html [/quote] 用on 这样写 $("#lastname").on( "click", function() { $('html, body').removeClass('wrap'); $('.msg').hide(); $('.side').show(); }); 和 $('#lastname').click(function(){})这样写应该是一样的,起不到作用。 应该怎么写才有作用呢???
starrycheng 2015-07-10
  • 打赏
  • 举报
回复
引用 3 楼 lixin1412 的回复:
页面加载完以后,动态添加的元素你这样写时没法给他绑定事件的,.click等同于bind('click',function(){}),只能给一开始就有的元素绑定事件,on可以给所有元素绑定事件,貌似jquery中bind也是通过on来实现的
.click等同于bind('click',function(){}),只能作用于第一次dom解析的元素。 用.bind()的代价是非常大的,它会把相同的一个事件处理程序hook到所有匹配的DOM元素上 不要再用.live()了,它已经不再被推荐了,而且还有许多问题 .delegate()会提供很好的方法来提高效率,同时我们可以添加一事件处理方法到动态添加的元素上。 我们可以用.on()来代替上述的3种方法 http://www.cnblogs.com/moonreplace/archive/2012/10/09/2717136.html
hch126163 2015-07-10
  • 打赏
  • 举报
回复
页面 dom 解析完后,在 绑定事件
lixin1412 2015-07-09
  • 打赏
  • 举报
回复
页面加载完以后,动态添加的元素你这样写时没法给他绑定事件的,.click等同于bind('click',function(){}),只能给一开始就有的元素绑定事件,on可以给所有元素绑定事件,貌似jquery中bind也是通过on来实现的
palljs001 2015-07-09
  • 打赏
  • 举报
回复
引用 1 楼 lixin1412 的回复:
$().on('click',function(){}); 只有这样才行!
为什么只有这样才行,两个事件都是这样吗? $(id)不行吗?
lixin1412 2015-07-09
  • 打赏
  • 举报
回复
$().on('click',function(){}); 只有这样才行!

87,955

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧