幾天前我剛剛開始了我的第一個JavaScript教程。我已經到了他們解釋庫的使用的地步。考慮到兩個問題至今:JavaScript庫:jQuery與原型
getElementById
實施爲jQuery的$("#id")
和$("id")
的原型。爲什麼不一致?如果包含這兩個庫,那麼瀏覽器如何決定應該爲
$("")
返回哪個對象?
幾天前我剛剛開始了我的第一個JavaScript教程。我已經到了他們解釋庫的使用的地步。考慮到兩個問題至今:JavaScript庫:jQuery與原型
getElementById
實施爲jQuery的$("#id")
和$("id")
的原型。爲什麼不一致?
如果包含這兩個庫,那麼瀏覽器如何決定應該爲$("")
返回哪個對象?
瀏覽器沒有「決定」,無論哪一個你包括第二個覆蓋第一個。
在兩個庫戰鬥在$
的情況下,使用jQuery
代替:
jQuery('#id') // same as $('#id') when $ == jQuery
然後,您可以返回控制$
與jQuery.noConflict
到原型。
至於不一致性,它們是由不同人在不同時間寫入的不同庫,無意使它們兼容。一致性從來不是一個考慮因素。
1.爲什麼不一致?
這兩個圖書館是在不同的時間,由不同的團隊實施的,並且做了非常不同的事情。爲什麼你會期望一致性?
2.如果包含這兩個庫,那麼瀏覽器如何決定
$("")
應返回哪個對象?
這取決於你如何包含它們。但是,jQuery具有避免這種衝突的功能,請參見jQuery.noConflict
。我已經使用了原型已經有一段時間了,但它也可能具有類似的功能。
Prototype在JavaScript本身中擴展了許多低級構造的原型(因此也是名稱)。 Ruby的哲學非常強調它的開放類,使語言能夠滿足你的需求,而不是像現在這樣使用它。因此,如果另一個庫期望通常的行爲,並依賴於它的破解(比如使用for ... each來遍歷數組),那麼您將得到不一致的結果。 jQuery可以使用noConflict()來處理Prototype對$符號的使用。並不是所有的jQuery插件都編寫得足夠好來處理剩下的問題。 – Walter
原型:$('itemId') - >單個項目或false。 $$('。className標記任何選擇器') - >匹配項數組或空數組。 jQuery:$('#itemId')或$('whatever selector') - >包含匹配的對象。 – Walter
此鏈接將幫助您在使用jQuery與其他庫一樣原型 http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/
你爲他們做了很多同樣的事情最有可能不會同時使用jQuery和原型一同來了解處理衝突。 – Jason
@meagar如果我需要在我的代碼中使用兩者,該怎麼辦? –
http://api.jquery.com/jquery.noconflict/ – j08691