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

How to call a JS method when user clicks at dynamically created link. JQuery, ASP.NET MVC

本文关键字:调用 JS 方法 MVC NET ASP JQuery 动态 用户 创建 链接      更新时间:2023-09-26

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

   $(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);}

如何在用户单击链接"Delete"时调用方法HelloWorld(data)?

我曾尝试在"onclick"事件中调用代码,但HelloWorld()函数在构建标记时立即调用。但是,我想在用户点击链接时进行调用。

您正在尝试附加一个事件。您需要使用addEventListenerattachEvent,而不是直接将函数分配给href

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

这里有两个主要问题:你不应该试图通过将href设置为某个东西来设置onclick处理程序,而且你在分配时实际上是在调用HelloWorld()函数,所以基本上你是在分配该函数返回到href中的任何内容。

您应该使用addEventListener来附加一个在单击时调用HelloWorld()的函数:

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

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

如果你想在用户点击你的元素时执行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);

`

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

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

类似这样的东西:

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

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

$("#imageBox1").append('<a href="' + javascript:alert(1); + '">' + text + '</a>');
$(document).on("click", "a", function(data){
    alert(data);
});