Javascript 仅当从html set onclick事件调用代码声明函数时,该函数才不存在

Javascript 仅当从html set onclick事件调用代码声明函数时,该函数才不存在,javascript,jquery,html,asp.net,asp.net-mvc,Javascript,Jquery,Html,Asp.net,Asp.net Mvc,我遇到了一个非常奇怪的问题,阻止我的代码启动JQUERY函数——但只有当事件在页面html中的onclick属性标记中声明时。如果将同一个函数分配给带有javascript“.click(function()…”事件的元素,则该函数将被正确调用,代码本质上不会说“此事件不存在!” 我在互联网上搜寻有同样问题的人,虽然有很多问题表面上看起来像我遇到的问题,但似乎没有一个问题能准确地解决 以下是一个例子: //Delete an existing exclusion. $.fn.deleteExcl

我遇到了一个非常奇怪的问题,阻止我的代码启动JQUERY函数——但只有当事件在页面html中的onclick属性标记中声明时。如果将同一个函数分配给带有javascript“.click(function()…”事件的元素,则该函数将被正确调用,代码本质上不会说“此事件不存在!”

我在互联网上搜寻有同样问题的人,虽然有很多问题表面上看起来像我遇到的问题,但似乎没有一个问题能准确地解决

以下是一个例子:

//Delete an existing exclusion.
$.fn.deleteExclusion = function (idExclusion) {
     document.cookie = idExclusion + "=; expires=; path=/";
     $.fn.buildExclusions();
}
如果我这样称呼这个方法:

$("#someButton").click(function(){
     $.fn.deleteExclusion();
)
…然后该函数存在并正常运行

但是,如果我按如下方式分配此函数(在页面加载时作为页面html的一部分创建):


…当我单击该链接时,该函数不存在

我公司的一个网站使用ASP.NET.aspx页面结构,但这种情况不会发生。不过,我正在开发一个新的MVC应用程序,这就是发生这种行为的地方


坦白地说,我被难住了。现在,我不确定还有什么可以提供代码方面的演示,而不必过多地使用不必要的细节。如果您需要其他代码来帮助我解决这个问题,请告诉我。

您需要包括Jquery

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

jQuery(document).ready(function($){
$.fn.deleteExclusion = function (idExclusion) {
     document.cookie = idExclusion + "=; expires=; path=/";
     $.fn.buildExclusions();
}
});

jQuery(文档).ready(函数($){
$.fn.deleteExclusion=函数(IDEExclusion){
document.cookie=idExclusion+“=;expires=;path=/”;
$.fn.buildExclutions();
}
});

我们找到了一个解决方法。为了使其正常工作,我们添加了:

//Set onclick events for delete exlusion anchor tag buttons created dynamically.
$(document).on("click", "a.deleteExclusion", function () {
    $.fn.deleteExclusion($(this).attr("id").replace("delete", ""));
});

这在页面加载时创建了onclick事件,但在创建元素时将其应用于元素。它允许最初在cshtml文件中创建的元素以及动态创建的html元素具有有效的单击事件。

Hi Paul,感谢您花时间回答!不过我确实有这个问题。我尝试了以下方法:另外,我尝试了adding a$无冲突,以查看我是否有一个不同的版本以某种方式存在冲突或试图定义$的其他内容。不走运。您能否检查控制台中是否有错误,您可以通过右键单击inspect element console来执行此操作。如果您看到任何红色,我们需要在继续之前修复它!V2:1中的“Uncaught TypeError:$.fn.deleteExclusion不是函数”,其中V2是.cshtml文件名。它将其放入匿名脚本中。
//Set onclick events for delete exlusion anchor tag buttons created dynamically.
$(document).on("click", "a.deleteExclusion", function () {
    $.fn.deleteExclusion($(this).attr("id").replace("delete", ""));
});