2014-12-10 58 views

回答

0

jQuery的,與許多其他圖書館一起,用「$」符號作爲別名的實際對象的名字 - 「jQuery的」。由於多個庫可能試圖聲明相同的美元別名,並且具有不同的API,所以期望美元符號被別名到像您這樣的特定庫的代碼可能在頁面之間不一致地工作,這取決於所使用的庫 - 或根本沒有如果全局使用衝突的庫。

有許多的方法可以對付這個 -

  1. 獨資在代碼中使用完整的jQuery對象名稱。您所提供的樣品將become-

    jQuery(".btnconfirmdelete").click(function (event) { 
        alert(''); 
    }); 
    

    你可以,也許應該使用jQuery no conflict註銷別名使用jQuery,以避免與其他庫 -

    jQuery.noConflict(); 
    
  2. 戰鬥可以分配jQuery來另一別名通過將jQuery noConflict函數的結果分配給一個變量。

    var foo = jQuery.noConflict(); 
    
    foo(".btnconfirmdelete").click(function (event) { 
        alert(''); 
    }); 
    
  3. 您可以別名jQuery的回立即調用函數表達式的範圍之內的美元符號(記住變量在JavaScript中具有的功能,而不是塊範圍)。再次,你會想使用noConflict來避免函數之外的問題。

    (function ($) { 
        // Other code 
    
        $(".btnconfirmdelete").click(function (event) { 
         alert(''); 
        }); 
    
        // More code 
    })(jQuery) 
    

的jQuery具有這個擴展在http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/

雖則完成您的具體回答一個很好的幫助頁面,那裏是你的代碼中的錯誤 - 功能「呼我」被引用兩個函數範圍在它定義的地方之外。

我有forked your JSFiddle和更正後的代碼如下。我也改善了您的格式,這是很好的做法,因爲它可以幫助您直觀地瞭解代碼heirachy避免像這個 -

(function ($, Sys) { 

    $(document).ready(
     function() { 
      $('.venobox').venobox(); 

      /* custom settings */ 
      $('.venobox_custom').venobox({ 
       framewidth: '400px',  // default: '' 
       frameheight: '300px',  // default: '' 
       border: '10px',    // default: '0' 
       bgcolor: '#5dff5e',   // default: '#fff' 
       titleattr: 'data-title', // default: 'title' 
       numeratio: true,   // default: false 
       infinigall: true   // default: false 
      }); 

      $(".btnconfirmdelete").click(function (event) { 
       alert('Delete'); 
      }); 

      function callme() { 
       alert('Called'); 
      } 

      callme(); 
    }); 
}(jQuery, window.Sys)); 
+0

感謝的問題,但恐怕你的小提琴是不工作要麼,你嘗試單擊「對話框「>>」刪除「 它不會觸發警報 – Mosta 2015-01-07 07:29:28