2014-06-25 69 views
0

我有一个按钮,当点击这个按钮时,我需要动态生成一个链接并添加一个处理程序,它显示一个twitter引导模式。我尝试这样做:动态添加事件处理程序到href也是动态生成的

$(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

什么是my_href,容器我希望并没有 – mplungjan

+0

你一个链接本身被重定向,因为'a'元素的默认行为是将用户重定向到其'href'属性中定义的url。为了防止发生这种情况,请使用传递给事件处理函数的'event'参数:'function showModal(e){e.preventDefault(); ...}' – PanterA

回答

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

使用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方法,但你在dom就绪处理程序中添加了方法showModal作为闭包方法。

+0

'$(“#my_href”)。on('click','.showmodal',showModal)'位于$(document).on(“click”,“#my_btn” ,....'? –

+0

由于某些原因,您的代码无法正常工作,即使添加了e.preventDefault,它仍会将我重定向到同一页面。 –

0
$(function() { 
    function showModal() { 
    alert("Modal"); 
    } 
    $('<a/>',{ 
     href: '#', 
     text: "Click Me", 
     click: function(e) { 
      e.preventDefault(); 
      showModal(); 
     } 
    }).appendTo('#my_href'); 
}); 

jsfiddle

0

在这里,你应该将事件附加到身体或文档不按钮

$("body").on("click","button[id$=my_btn]", function(){ 

     alert("hi"); 
    }) 
相关问题