为什么要将JavaScript包装成这样;(函数($){…JavaScript代码..})(jQuery)&引用;?
我使用mvc5。不要在测试中包含jQuery。 _Layout.cshtml:为什么要将JavaScript包装成这样;(函数($){…JavaScript代码..})(jQuery)&引用;?,javascript,jquery,html,asp.net-mvc-5,Javascript,Jquery,Html,Asp.net Mvc 5,我使用mvc5。不要在测试中包含jQuery。 _Layout.cshtml: @RenderBody() 有些东西(可能是MVC5)为您包装了代码,但有充分的理由。在指向全局声明函数的元素上放置onclick处理程序是90年代编写JS的方式 要解决此问题,请在按钮上添加id属性,然后删除内联事件处理程序: <button id="mybutton"> $('#mybutton').on('click', function () { alert("I am working
@RenderBody()
有些东西(可能是MVC5)为您包装了代码,但有充分的理由。在指向全局声明函数的元素上放置onclick
处理程序是90年代编写JS的方式
要解决此问题,请在按钮上添加id
属性,然后删除内联事件处理程序:
<button id="mybutton">
$('#mybutton').on('click', function () {
alert("I am working");
});
或者,由于您在后面的注释中提到有一个循环生成这些元素,因此请改用类
和数据-
属性:
<button class="myclass" data-id="...">
函数myFunction(){
警报(“其正在工作”);
}
点击我
这会奏效的。cheers内联函数应该在全局范围内才能访问。不要将函数
定义
包装在iLife
中,内联函数是一种非常过时的处理事件的方式,特别是因为您已经承诺使用jQuery,该特定函数是执行jQuery的document.ready
事件处理程序的方法之一,确保在执行代码之前完全加载DOM。通常,在需要在脚本中引用DOM元素的情况下执行此操作,因此在执行此操作之前,请确保它们存在。要解决此问题,只需将myFunction()
移到该匿名函数之外,使其具有全局作用域。;不要使用Instinic事件属性(它依赖于非常糟糕的全局属性),谢谢你的回答。在这种情况下,我有一个错误;ReferenceError:jQuery未定义}(jQuery)@Iva所以您需要用
标记加载jQuery
,我想使用内联函数,因为我在循环中的服务器上添加了这种代码和平。这个问题在我看来很愚蠢。我想我错过了一些非常简单的东西。@Alnitak他在问他的函数是如何包装在(function($){…})(jQuery)中的既然他没有。@Pumpkinzz看起来像MVC5,那么?无论哪种方式,使用内联事件处理程序都是容易出错且脆弱的。
$('.myclass').on('click', function() {
var id = $(this).data('id');
...
});
<script>
function myFunction() {
alert("its is working");
}
</script>
<button onclick="myFunction()">Click me</button>