我正在尝试在href link onClick
事件中的fancybox中显示产品。
但是当发生点击事件时,它会出现类似
ReferenceError:未定义productfancybox
我试过这段代码:
HomePageProducts.cshtml:
<div class="herry-pic-cols brdr">
<ul id="homePageFeaturedProductInit">
@foreach (var item in Model)
{
<li>
<span id="@item.Id">
@Html.Partial("_CategoryBox", item)
<a id="Link" href="#" onClick ="productfancybox(@item.Id);">Link</a>
</span>
</li>
}
</ul>
<div class="clear"></div>
<a class="prev-btn2" href="#"></a>
<a class="next-btn2" href="#"></a>
</div>
<script type="text/javascript">
$(window).load(function () {
function productfancybox(id) {
$.fancybox({
'width': '80%',
'height': '100%',
'autoScale': true,
'transitionIn': 'fade',
'transitionOut': 'fade',
'href': '/Category/CategoryProductsFancyBox?Id='+id,
'type': 'iframe',
'onClosed': function () {
window.location.href = "f?p=&APP_ID.:211:&SESSION.::&DEBUG.::";
}
});
}
});
</script>
为什么onClick
事件不起作用?
我错过了什么吗?
答案 0 :(得分:3)
您的函数productfancybox
的本地范围是在窗口加载时调用的匿名函数。一旦发生,它就会消失,不再存在。
相反,你需要在全局命名空间中定义你的函数(例如, not 在这样的调用中),或者最好是创建一个命名空间并在那里定义你的函数:
var MyAwesomeNamespace = MyAwesomeNamespace || {};
MyAwesomeNamespace.productfancybox = function (id) {
...
}
然后,您可以致电:
MyAwesomeNamespace.productfancybox(1);
代码中的任何位置,在该脚本运行之后。这只是一个简单的例子。有更好的方法为您的应用程序设置库。以下是您可以使用的基本入门书:http://css-tricks.com/how-do-you-structure-javascript-the-module-pattern-edition/。