将click事件分配给动态添加的按钮
我正在动态创建一些按钮并为它们分配ID。
当有人点击该按钮时我想收集ID并从那里执行一些任务。
这是我正在进行的工作
$(document).ready(function() { $('input:button').addClass("btnClass"); fillData(); $('#btnGet').click(function() { fillData(); }); function fillData() { $.ajax({ type: "Post", url: "../Linq/myService.asmx/getStudent", contentType: "application/json; charset=utf-8", dataType: "json", success: function(msg) { //var nMsg = (typeof msg.d) == 'string' ? eval('(' + msg.d + ')') : msg.d; var t = " " + "Your Search Result......
" + " Student ID Student Name Student Course Student USN " + "
"; $.each(msg.d, function(index, item) { t = t + " " + item.studId + " " + item.studName + " " + item.studCourse + " " + item.studUsn + " "; t = t + "
"; }); t = t + "
"; $("#stdData").html(t); }, error: function(msg) { } }); } function onButtonClick() { var btnId = $(this).val(); alert(btnId); }
只需在您正在创建的按钮中添加new-button
的类名,然后添加一个单击处理程序。
所以替换这段代码
代替
var btnId = $(this).val();
这将为您提供单击按钮的id属性,而不是表单元素的值。
我希望这能帮到您
杰罗姆瓦格纳
如果要动态添加按钮,请考虑使用“.live()”。 每当指定的事件发生时,它都会跟随树上的html元素,直到它被处理完毕。 如果您有很多元素也会更有效,因为事件未分配给元素本身。 你需要为按钮指定一个类或其他东西来识别它们,让我们说’dynamicButton’,所以改变这个:
对此:
您可以使用以下代码收听事件:
$('input.dynamicButton').live('click', function (event) { alert($(this).attr('id')); });
无论如何将按钮添加到页面,只要点击“dynamicButton”类的按钮,就会调用这个处理程序。
当有人点击那个按钮我想收集ID时 ,我会从那里做一些任务………….
尝试从此行中删除onclick
属性:
t = t + " " + item.studId + " " + item.studName + " " + item.studCourse + " " + item.studUsn + " ";
进行中:
t = t + " " + item.studId + " " + item.studName + " " + item.studCourse + " " + item.studUsn + " ";
现在你可以使用jQuery的live
方法(因为你的按钮是动态生成的)来完成这个按钮被点击时的技巧:
$(function(){ $('#btn').live('click', function(){ var btnId = $(this).attr('id'); alert(btnId); }); });
注意:
要获取id
属性,您可以使用如上所示的attr
方法,例如: $(this).attr('id')
not val
(用于获取输入元素的值),就像您在代码中一样。
我使用delegate()
完成了这个。 在我的例子中,PHP脚本从MySQL数据库生成页面的内容。 对每个元素添加一个按钮(单击这些按钮可以从数据库中删除相应的元素)。 删除由另一个激活这些按钮的PHP脚本处理,因此每个按钮都会附加一个click
事件,如下所示:
$('.items').delegate('[type="button"]', 'click', remove_item);
按钮是items
类的一部分, remove_item
是删除的回调。