jquery创建html元素,并且绑定事件。事件没有触发,大家帮我看看错在哪里?

fihuang 2012-04-13 12:11:50
jquery创建html元素,并且绑定事件。事件没有触发,大家帮我看看错在哪里?

//创建html元素
var img = $("<img>").attr("class", "headImg").attr("src", "http://..");
var hidden = $("<input>").attr("type", "hidden").attr("class", "userID").val(5);
var li = $("<li>").append(img).append(hidden);
//给img绑定click事件
$(img).live("click", function() {
var friendID = $(this).siblings("input:hidden.userID").val();
alert(friendID);
});
以上代码生成的html如下所示
<li>
<img class="headImg" src="http://..">
<input type="hidden" class="userID" value="5">
</li>
...全文
1020 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
atxkm 2014-02-07
  • 打赏
  • 举报
回复
引用 6 楼 fihuang 的回复:
[Quote=引用 5 楼 的回复:] 这样试试看 C# code //创建html元素 var img = $("<img>").attr("class", "headImg").attr("src", "http://.."); var hidden = $("<input>").attr("type", "hidden").attr("class", "userID").val(5); var li = $("<li>…… [/Quote]这样不符合要求的 你把class为headImg的所有img都绑定了事件 而不是仅仅给新建的那一个img绑定 我用另外一种方法解决了: $(document).ready(function() { $("img.headImg").live("click", function() { }); }); 使用 live() 方法向尚未创建的元素添加事件处理器。 新建元素的时候不需要绑定事件了。 但我还是想用新建元素时动态绑定事件的方法。
对,就是这个live
暖枫无敌 2012-04-13
  • 打赏
  • 举报
回复
这样试试看


//创建html元素
var img = $("<img>").attr("class", "headImg").attr("src", "http://..");
var hidden = $("<input>").attr("type", "hidden").attr("class", "userID").val(5);
var li = $("<li>").append(img).append(hidden);

$(".headImg").live('click', function() {
var friendID = $(this).siblings("input").attr("value");
alert(friendID);
});

fihuang 2012-04-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

引用 2 楼 的回复:

to taomanman:
我这里是动态创建img input和li,然后把img和input放到li里面,最后再把这个li插入到页面上。
img input和li一开始是没有的。


//给img绑定click事件
$("img").click(function() {
var friendID……
[/Quote]1.我是动态生成元素并且插入,在$(document).ready()里绑定事件的方法对页面加载后插入的元素无效。
2.我只是想给新插入的这一个li里面的这个img绑定click事件,并不是给页面上之前已经存在的img也绑定。
暖枫无敌 2012-04-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

to taomanman:
我这里是动态创建img input和li,然后把img和input放到li里面,最后再把这个li插入到页面上。
img input和li一开始是没有的。
[/Quote]

//给img绑定click事件
$("img").click(function() {
var friendID = $(this).siblings("input").attr("value");
alert(friendID);
});
fihuang 2012-04-13
  • 打赏
  • 举报
回复
to taomanman:
我这里是动态创建img input和li,然后把img和input放到li里面,最后再把这个li插入到页面上。
img input和li一开始是没有的。
暖枫无敌 2012-04-13
  • 打赏
  • 举报
回复
加<>做什么,去掉就可以啦

//创建html元素
var img = $("img").attr("class", "headImg").attr("src", "http://..");
var hidden = $("input").attr("type", "hidden").attr("class", "userID").val(5);
var li = $("li").append(img).append(hidden);
//给img绑定click事件
$(img).live("click", function() {
var friendID = $(this).siblings("input:hidden.userID").val();
alert(friendID);
});
fihuang 2012-04-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

这样试试看

C# code

//创建html元素
var img = $("<img>").attr("class", "headImg").attr("src", "http://..");
var hidden = $("<input>").attr("type", "hidden").attr("class", "userID").val(5);
var li = $("<li>……
[/Quote]这样不符合要求的 你把class为headImg的所有img都绑定了事件 而不是仅仅给新建的那一个img绑定
我用另外一种方法解决了:
$(document).ready(function() {
$("img.headImg").live("click", function() {
});
});
使用 live() 方法向尚未创建的元素添加事件处理器。
新建元素的时候不需要绑定事件了。
但我还是想用新建元素时动态绑定事件的方法。

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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