簡體   English   中英

使用jQuery()for $(document).ready()?

[英]using jQuery() for $(document).ready()?

我個人更喜歡第一種語法

jQuery()

是否安全尊重常用的:

$(document).ready()

對於其他選擇器,我將使用$('#id'). 我只是要求第一個.ready

jQuery$是可以互換的(來自jQuery源代碼):

window.jQuery = window.$ = jQuery

但要小心其他可能使用$庫。 至於使用ready()

以下所有三種語法都是等效的:

  • $(文件)。就緒(句柄)

  • $()。ready(處理程序)(不建議這樣做)

  • $(句柄)

來自ready() API。

加載jquery腳本后立即添加以下代碼:

(function($){
    $.fn.oldReady = $.fn.ready;
    $.fn.ready = function(fn){
        return $.fn.oldReady( function(){ try{ if(fn) fn.apply($,arguments); } catch(e){}} );
    }
})(jQuery);

使用jQuery更“安全”,因為它不會與Mootools等其他框架發生沖突。 如果你只使用jQuery,使用$沒有任何害處。

如果您只使用jQuery框架,那么我將使用$語法,特別是ready事件處理程序的簡寫版本更清晰。 這只是個人偏好 - 它對我來說很明顯它的作用,而不是那么冗長。 您可以選擇任何其他表格。

$(function() {

});

如果你有其他框架,那么你應該按照說明在noConflict模式下設置jQuery: httpnoConflict

來自引用頁面的代碼示例:

<script type="text/javascript" src="other_lib.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
  $.noConflict();
  jQuery(document).ready(function($) {  // or jQuery(function($) {
    // Code that uses jQuery's $ can follow here.
  });
  // Code that uses other library's $ can follow here.
</script>

如果你正在構建自己的插件而你無法確定jQuery是當時唯一使用的框架,我會在內部使用jQuery()或者至少在你的范圍內明確地為jQuery對象賦值,這樣你就知道了你正在做什么。

兩個名稱$jQuery是同義詞。 jQuery更明確; 如果您使用其他框架,則可能會覆蓋$

如果將一個函數作為第一個參數傳遞給jQuery函數(或者顯然是$ ),那么它的執行就像是對jQuery(document).ready的調用一樣。 所以是的,它完全一樣。

實際上,所有這些在功能上都是等價的(前提是你沒有任何其他東西與$ ):

$(document).ready(function() {});
jQuery(document).ready(function() {});
$(function() {});
jQuery(function() {});

這完全取決於您使用的環境和風格。

我個人的偏好是使用顯式的$(document).ready調用(#1):顯然這是在DOM准備就緒時運行的代碼。 您的偏好(#4)的主要優點是它清楚地表明代碼是jQuery,這可能對將來閱讀您的代碼的人有用。

jQuery文檔說他們是一樣的。

你的問題真的是二合一的。 有幾種方法可以連接ready事件,但這四種變化與問題相關:

jQuery(function(){ ... });

jQuery(document).ready(function(){ ... });

$(function(){ ... });

$(document).ready(function(){ ... });

$ identifier是jQuery標識符的別名。 使用noConflict方法,如果$別名與任何其他庫沖突並且只使用jQuery標識符(甚至釋放所有標識符並指定自己的標識符),則可以釋放$ alias。

使用jQuery對象本身來掛接ready事件是一種常用的簡寫,但僅僅通過查看代碼它的作用就不那么清楚了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM