JQuery $("...").appendTo("...") 获取不到新创建的元素 本帖最后由 joekingwang 于 2011-03-03 19:58:11 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <script language="javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script><table id="table-SQL" cellspacing="0" cellpadding="2" border="1"> <tr id="tableSQL_0"><td colspan="3">表1</td></tr> <tr id="tableSQL_1"> <td>aaaaaaaaaaa</td> <td>bbbbbbbbbbb</td> <td><a href="javascript:" id="SQLROW_add">添加</a></td> </tr> <tr> <td><span id="spanSQL_1">aaaaaaaaaaa</span></td> <td><span id="spanSQL2_1">bbbbbbbbbb</span></td> <td><a href="javascript:void(0);" class="SQLROW_del">获取当前元素</a></td> </tr> <a href="javascript:void(0);" id="aaa">插入新行后,能获取正确的行数</a></table><script type="text/javascript">$(function(){ //行删除 $(".SQLROW_del").live('click',function() { alert("eee"); alert($(this).html()); //$(this).parent().remove(); }); //行添加 $("#SQLROW_add").click(function(){ $("<tr id=\"tableSQL_6\"><td><span id=\"spanSQL_6\">new1</span></td><td><span id=\"spanSQL2_6\">new2</span></td><td><a href=\"javascript:void(0);\" class=\"SQLROW_del\">获取当前元素</a></td></tr>").appendTo("#table-SQL"); }); $("#aaa").click(function(){ alert($("#table-SQL").find("tr").length); });});</script> 解决了,呵呵,问题挺白的,呵呵,分享个大家。大家都知道,用jquery的appendTo动态增加的东西,添加的事件只能跟在appendTo后写.比如:$("<div><img src=''></div>").appendTo("body");如果我们想给这动态增加的东西 添加一个click事件.我们可以这样写:$("<div><img src=''></div>").appendTo("body").click(function(){ // do something... ;});如果我现在想对div,里面的img添加事件, 而不是整个div.那我们怎么办呢?也许你已经想到方法了,我说下我的方法吧. $("<div><img src=''></div>").appendTo("body").find("img").click(function(){ // do something... ;});这样click事件 就只对img有效了.注意:find()方法 要注意配合跟 end()使用... 谢谢hookee老大,呵呵。附上live用法:live(type, [data], fn)手册API的介绍 jQuery 给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的也有效。 如下用 live给class=clickme的元素绑定一个click事件:$('.clickme').live('click', function() { alert("Live handler called."); });当我们在某次事件又动态地添加了一个class=clickme的元素时,如$('body').append('<div class="clickme">Another target</div>');然后再点击新增的元素,他依然能够触发事件处理函数。 脚本编写 怎么获得鼠标选中的文字 getElementsByTagName 取标签 影响其他页面!~~ JavaScript函数传参的问题????? 同步输入问题! JSP里怎么取整啊.怎么老是会出问题啊... 难题:如何取出<input type="text" name="fld_Parties.Party.Email[0]" value="test">的值? javascript 版本问题 很急:(请版主帮帮忙,请大家帮帮忙看看下面这段代码,怎么解决) 我的浏览器对有javascript的语句报错? Firefox 解析外部加载js文件乱码 这段js代码是怎么执行的
<script language="javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<table id="table-SQL" cellspacing="0" cellpadding="2" border="1">
<tr id="tableSQL_0"><td colspan="3">表1</td></tr> <tr id="tableSQL_1">
<td>aaaaaaaaaaa</td>
<td>bbbbbbbbbbb</td>
<td><a href="javascript:" id="SQLROW_add">添加</a></td>
</tr>
<tr>
<td><span id="spanSQL_1">aaaaaaaaaaa</span></td>
<td><span id="spanSQL2_1">bbbbbbbbbb</span></td>
<td><a href="javascript:void(0);" class="SQLROW_del">获取当前元素</a></td>
</tr> <a href="javascript:void(0);" id="aaa">插入新行后,能获取正确的行数</a>
</table>
<script type="text/javascript">
$(function(){
//行删除
$(".SQLROW_del").live('click',function() {
alert("eee");
alert($(this).html());
//$(this).parent().remove();
}); //行添加
$("#SQLROW_add").click(function(){
$("<tr id=\"tableSQL_6\"><td><span id=\"spanSQL_6\">new1</span></td><td><span id=\"spanSQL2_6\">new2</span></td><td><a href=\"javascript:void(0);\" class=\"SQLROW_del\">获取当前元素</a></td></tr>").appendTo("#table-SQL");
}); $("#aaa").click(function(){
alert($("#table-SQL").find("tr").length);
});
});
</script>
比如:
$("<div><img src=''></div>").appendTo("body");
如果我们想给这动态增加的东西 添加一个click事件.
我们可以这样写:
$("<div><img src=''></div>").appendTo("body").click(function(){
// do something... ;
});如果我现在想对div,里面的img添加事件, 而不是整个div.那我们怎么办呢?也许你已经想到方法了,我说下我的方法吧.
$("<div><img src=''></div>").appendTo("body").find("img").click(function(){
// do something... ;
});
这样click事件 就只对img有效了.
注意:
find()方法 要注意配合跟 end()使用...
附上live用法:
live(type, [data], fn)
手册API的介绍 jQuery 给所有匹配的元素附加一个事件处理函数,即使这个元素是以后再添加进来的也有效。 如下用 live给class=clickme的元素绑定一个click事件:
$('.clickme').live('click', function() {
alert("Live handler called.");
});
当我们在某次事件又动态地添加了一个class=clickme的元素时,如
$('body').append('<div class="clickme">Another target</div>');
然后再点击新增的元素,他依然能够触发事件处理函数。