我认为你正在这样做
var markup = "<tr><td colspan='2'><h1>${hotelname}</h1></td></tr>
<tr><td><input type=button value=MoreInformation id=btncabinmoreinfo1></td></tr>";
$.template("cabinTemplate", markup);
并附加它是一些容器,如
$.tmpl( "cabinTemplate", data).appendTo( "#elementid" );
接着
$("#btncabinmoreinfo1").click(function () {
alert("more info");
});
所以,你可以做一些改变,比如
- 用引号将您的属性值括起来
- 并且因为您是在循环中执行此操作,所以在您的按钮上添加了一个类。
- 在您的模板父级上附加事件,例如
var markup = "<tr><td colspan='2'><h1>${hotelname}</h1></td></tr>
<tr><td><input type='button' value='MoreInformation' class='btncabinmoreinfo1'></td></tr>";
$.template("cabinTemplate", markup);
$("#elementid").on('click' , '.btncabinmoreinfo1',(function () {
alert("more info");
});
您可以在此处查看.on的使用情况。
委托事件方法仅将事件处理程序附加到一个元素,#elementid
,并且事件只需要冒泡(从 clicked.btncabinmoreinfo1
到#elementid
):
因此,事件将#elementid
通过单击将附加到元素.btncabinmoreinfo1
会冒泡,因此新的动态元素也可以响应事件。
我希望,它会有所帮助:)