ReferenceError:onClick事件中的“productfancybox未定义”

时间:2014-05-12 11:50:29

标签: asp.net-mvc razor nopcommerce

我正在尝试在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事件不起作用?
我错过了什么吗?

1 个答案:

答案 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/