2014-05-12 135 views
1

我試圖在href鏈接onClick事件的fancybox中顯示產品。 但是當點擊事件occures,它給像ReferenceError:「onflickbox未定義」onClick事件

ReferenceError: productfancybox is not defined

我已經試過這個代碼中的錯誤:

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事件不工作?
我錯過了什麼?

回答

3

您的函數productfancybox在本地作用於在窗口加載時調用的匿名函數。一旦發生,它就會消失,不再存在。

相反,你需要在全局命名空間(即這樣的調用中)來定義你的函數,或者,最好,有創建命名空間,並定義功能:後來

var MyAwesomeNamespace = MyAwesomeNamespace || {}; 

MyAwesomeNamespace.productfancybox = function (id) { 
    ... 
} 

然後,您可以撥打電話:

MyAwesomeNamespace.productfancybox(1); 

代碼中的任何地方,在該腳本運行之後。這只是一個簡單的例子。有更好的方法來爲你的應用程序建立一個庫。以下是您可以使用的基本入門書:http://css-tricks.com/how-do-you-structure-javascript-the-module-pattern-edition/