我有一个按钮,单击此按钮时,我需要动态生成一个链接,并为其添加一个处理程序,显示一个Twitter引导程序模式。我试过这个:
$(function() {
function showModal() {
$("#myModal").modal("show");
}
$(document).on("click", "#my_btn", function() {
//generating a link a adding a handler to it which is "showModal()"
//.....
$("#my_href").html("Some text123 <a href='#' onclick='showModal();'>test123</a>.");
//.....
})
});
但是当我碰到这个链接时,错误被抛出
Uncaught ReferenceError: showModal is not defined
我当然可以将showModal()
移出$(function() {...})
。但我想知道,有更好的方法吗?总的来说,这是实现我想要的好方法吗?
更新:
即使将showModal()
移出$(function() {...})
它也无法正常工作,它会将我重定向到同一页面,但不会显示弹出窗口。
答案 0 :(得分:2)
不要使用内联Javascript。您已经发布了一个完美的示例,说明应该在您的问题中正确执行此操作:在包含元素上使用.on
。
$(document).on("click", "#my_btn", function() {
$("#my_href").html("Some text123 <a href='#'>test123</a>.");
});
$('#my_href').on('click', 'a', showModal);
答案 1 :(得分:1)
使用jQuery委托事件处理程序添加单击处理程序
$(function () {
function showModal() {
$("#myModal").modal("show");
}
$(document).on("click", "#my_btn", function () {
//generating a link a adding a handler to it which is "showModal()"
//.....
$("#my_href").html("Some text123 <a href='#' class='showmodal'>test123</a>.");
//.....
});
$("#my_href").on('click', '.showmodal', showModal)
});
在你的情况下,你有一个调用showModal
的内联事件处理程序,这需要一个名为showModal
的方法在全局范围内,但你已经添加了方法showModal
作为闭包方法在dom ready handler。
答案 2 :(得分:0)
$(function() {
function showModal() {
alert("Modal");
}
$('<a/>',{
href: '#',
text: "Click Me",
click: function(e) {
e.preventDefault();
showModal();
}
}).appendTo('#my_href');
});
答案 3 :(得分:0)
在这里,您应该将事件附加到正文或文档而不是按钮
$("body").on( "click","button[id$=my_btn]", function(){
alert( "hi" );
})