jQuery.noConflict()

admin發表於2017-02-13

很多其他JavaScript庫同樣使用$作為函式或者變數名,正如jquery做的一樣。

jQuery中,$是jQuery的一個別名,所以可以只使用jQuery。如果需要同時使用jQuery和其他JavaScript庫,需要使用 $.noConflict()把$的控制權交給其他庫,這樣就不會產生衝突。

語法結構:

[JavaScript] 純文字檢視 複製程式碼
jQuery.noConflict( [removeAll ] )

removeAll:可選,一個布林值,規定是否將jQuery完全移到一個新的名稱空間。

程式碼例項:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<script src="//cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  jQuery.noConflict();
  jQuery(".ant_1").css("color", "red");
  $(".ant_2").css("color", "green");
})
</script>
</head>
<body>
<div class="ant_1">螞蟻部落一</div>
<div class="ant_2">螞蟻部落二</div>
</body>
</html>

第二個div中的文字顏色並沒有被設定為綠色,說明"$"控制權已經不屬於jQuery庫。

[HTML] 純文字檢視 複製程式碼執行程式碼
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<script src="//cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  var jq=jQuery.noConflict();
  jQuery(".ant_1").css("color", "red");
  jq(".ant_2").css("color", "green");
})
</script>
</head>
<body>
<div class="ant_1">螞蟻部落一</div>
<div class="ant_2">螞蟻部落二</div>
</body>
</html>

也可以為jQuery建立一個別名,當然"jQuery"依然是可以使用的。

[HTML] 純文字檢視 複製程式碼執行程式碼
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<script src="//cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  var jq=jQuery.noConflict(true);
  jq(".ant_1").css("color", "red");
  jQuery(".ant_2").css("color","green");
})
</script>
</head>
<body>
<div class="ant_1">螞蟻部落一</div>
<div class="ant_2">螞蟻部落二</div>
</body>
</html>

如果jQuery.noConflict()方法的引數為true,那麼"jQuery"控制權也不屬於jQuery,這時候只能夠使用別名。