2013-06-28 28 views
1

形勢一定的JavaScript函數:有沒有辦法阻止訪問jQuery庫

  • 單個網頁上我使用的語法高亮和燈箱2
  • 語法高亮使用JavaScript。燈箱2使用的jQuery(1.7.2版本)
  • 當我運行在獨立的(不同頁)每個腳本,它的工作原理
  • 問題只有當我在同一個頁面
  • 在谷歌瀏覽器上同時運行時,網頁完全
  • 運行在IE 8我得到一個錯誤,當lightbox2功能的部分稱爲
  • 錯誤點jquery1.7.2不受該對象
  • 代碼的確切行支持的文件,說明方法/屬性的錯誤是:parts = rfxnum.exec(val);
  • 我插入了一個alert()來顯示rfxnum和val的價值
  • rfxnum =/^([+ - ] =)?([\ d + .-] +)([az%] *)$ /我
  • val = 802
  • 我發現的瘋狂的事情是,當我獨立運行這兩個腳本時,警報顯示rfxnum和val的值相同,但運行良好。
  • 語法高亮在各種條件下運行良好

我的猜測: 句法的熒光筆似乎被幹擾瓦特/ jQuery的1.7.2庫值/功能/參數。或者語法高亮器和jQuery庫引用的一些全局值。

我的問題:

  • 有沒有一種方法,以防止語法高亮或者任何其他非jQuery的JS腳本不會相互作用/引用了jQuery庫。
  • 如果答案是,JavaScript不會首先引用jQuery庫,那麼我的問題是什麼是一些可能的原因發生這種情況。
  • 或者,有沒有辦法來包裝jQuery的lib和相關的JS功能結合在一起,使其他功能可以引用任何函數/變量在包

我將不勝感激任何建議/見解。

+2

如果可能的話,請在http://jsbin.com/上進行示例,以便其他人可以獲得更好的主意。 – Diode

+1

可以嘗試使用自調用匿名函數(function(){..})()來包裝「無jQuery代碼」;和/或使用jquery noconflict $ .noConflict(); jQuery(document).ready(function($){ //使用jQuery $的代碼可以在這裏跟着。 }); – mkutyba

回答

2

您可以use noConflict()

<!-- Putting jQuery into no-conflict mode. --> 
<script src="prototype.js"></script> 
<script src="jquery.js"></script> 
<script> 

var $j = jQuery.noConflict(); 
// $j is now an alias to the jQuery function; creating the new alias is optional. 

使用jQuery.noConflict(); - Lightbox and jQuery conflict

+0

感謝您的回覆。我之前已經閱讀過關於noconflict的內容,但我仍然無法理解如何實際使用它。在我上面的情況中,我是否會用$ j替換每一個$?還是我把我的所有功能放在$ j面前? ($ j.function(){。 – user2530844

+0

它清楚的存在於第一個鏈接中..seee第二paraghraph ..使用像jQuery.noConflict(); jQuery(document).ready(function($){ –

+0

Sincere apologies,第一次在這個表單上,並沒有注意到代碼示例下的鏈接,我已經通過了你給我的鏈接中的所有內容,嘗試了所有我能夠解決的問題,結論是我不認爲它的noconflict問題。所有嘗試都失敗w/noconflict B)你提供的鏈接上的大多數帖子都是jquery vs jquery。這種情況是js(非jquery)vs jquery,在js腳本中沒有使用$。 C)爲什麼在谷歌瀏覽器中工作,如果它是一個noconflict問題。無論哪種方式感謝您的建議,幫助我更多地瞭解沒有衝突。 – user2530844

相關問題