如何在用户单击动态创建的链接时调用JS方法。 JQuery,ASP.NET MVC

时间:2015-04-03 09:56:59

标签: javascript jquery asp.net asp.net-mvc asp.net-mvc-4

我在视图中动态创建一个链接来调用控制器的方法:

   $(document).ready(function(){
     var data="SomeDataToController";
     var link=document.createElement('a');
     var linkText=document.createTextNode("Delete");
     link.appendChild(linkText);
     link.title="Title text";
     link.href=HelloWorld(ee); 
    document.getElementById("imageBox1").
    appendChild(link);


    }
   function HelloWorld(data){
    alert(data);}

如果用户点击链接“删除”,如何调用方法HelloWorld(数据)?

我试图在“onclick”事件中调用代码,但是在构建标记时会立即调用HelloWorld()函数。但是,我想在用户点击链接时拨打电话。

6 个答案:

答案 0 :(得分:2)

您正在尝试附加活动。您需要使用addEventListenerattachEvent,而不是直接将功能分配给href

if (window.addEventListener) {
  link.addEventListener('click', HelloWorld(ee), false);
} else if (window.attachEvent) {
  link.attachEvent('onclick', HelloWorld(ee));
}

答案 1 :(得分:1)

使用jQuery的.on命令,但将其用作委托。这也是在加载页面后处理对象的创建。

例如,您可以在.on级别附加<body>并说明,每次点击<a>类“clickme”时,它都会执行您的方法。

这样的事情:

$(body).on("click", ".clickMe", function (e) {
  e.preventDefault();
  HelloWorld('my value taken from data- attribute or whatever');
});

答案 2 :(得分:1)

这里有两个主要问题:您不应该尝试通过将href设置为某个东西来设置onclick处理程序,并且在分配时实际调用HelloWorld()函数,所以基本上你是&#39 ;重新分配函数返回到href。

您应该使用addEventListener附加在点击时调用HelloWorld()的函数:

link.addEventListener('click', function() { HelloWorld(data); })

如果您需要在版本9之前支持Internet Explorer,您还需要有条件,并使用attachEvent()

答案 3 :(得分:1)

如果您想在用户点击元素时执行JavaScript功能,可以使用类似的功能。

   $(document).ready(function () {
        var data = "SomeDataToController";
        var link = document.createElement('a');
        var linkText = document.createTextNode("Delete");
        link.appendChild(linkText);
        link.title = "Delete";
        link.onclick = eval(getDeleted);
        document.getElementById("imageBox1").appendChild(link);

    });

    function getDeleted() {

        var f = "delete";
        Delete(f);
    }

    function Delete(f) {
        alert(f);
    }

但是我想使用像这样的jQuery功能。

`

function myHandler(event) {
    alert(event.data.foo);
}
$('#imageBox1 a').on("click", {
    foo: "bar"
}, myHandler);

`

答案 4 :(得分:0)

$(document).on("click", "a", function(data){
    alert(data);
});

答案 5 :(得分:0)

我建议使用jQuery创建动态HTML。

$("#imageBox1").append('<a href="' + javascript:alert(1); + '">' + text + '</a>');