it-swarm-tr.com

J2.5 uzantılarında jquery kullanırken en yaygın ve çözülmemiş sorun

Joomla'da bir sayfada çeşitli uzantılar olduğunda 2.5 kişi jquery ile ilgili sorunlar soruyor. Soru, bir uzantı geliştirici olarak j2.5 uzantısında jquery'yi nasıl kullanacağız ??, diğer uzantıların da jquery dosyası ve jquery çakışma kodları beyan ettiğini ve bazı geliştiricilerin umursamadığını veya bilmediğini ve kullandığını düşünüyoruz. jquery kendi şekilde böylece jquery uzantısı çalışmıyor.

Şimdi jfactory-> getapplication-> get ('jquery') kontrol etmeliyim ama yukarıda bahsettiğim gibi yeterli değil. Jquery komut dosyası dosyasını bildiren jquery kullanmanın doğru yolu olan aşağıdakiler arasında -

  1. nc_mode = jQuery.noConflict (); nc_mode (function () {......});
  2. jQuery.noConflict (); jQuery (function () {....});
  3. Yalnızca jQuery - jQuery (function () {....});

Doğru şekilde çözmek çok gereklidir, çünkü jquery kullanımı uzantılarda çok yaygındır.

1
dev-m

noConflict, işlev bildirilirken kullanılan diğer adın diğer kütüphanelerle çakışması için kullanılır. Joomla, jQuery ile büyük çatışma sorunları olan Mootools'u kullanır (yavaş yavaş çekirdekten çıkarılır) ve bu şekilde işlevleri bildirmek için $ takma adı olarak kullanılır:

$('button').click(function() { ...

noConflict hakkında daha iyi ve daha derinlemesine bir anlayış elde etmek için, size kullanım örnekleri verecek olan aşağıdakileri de okuyun:

http://api.jquery.com/jquery.noconflict/

Uzantılarda jQuery içe aktarma gelince, bu biraz zor olanıdır. Önceki bir yanıtımla ilgili yorumunuzu gördükten sonra, jQuery'yi içe aktarmanın farklı yolları olduğunu tamamen biliyorsunuzdur. Sadece 1 örneğinin içe aktarıldığından emin olmak mümkündür ancak biri bazı sorunlarla karşılaşabilir.

Kendi siteniz için bunu yaparken, sadece bir eklenti olan jQuery Easy kullanmanızı tavsiye ederim. Bir ana özellik, jQuery'nin diğer tüm örneklerini çıkarır, böylece birden çok kez içe aktarılmaz.

Bir geliştirici olarak halka sunmak istediğiniz kendi uzantınızı yazarken, bu konuda araştırma yapılması gereken ilk şeydir. JQuery'nin önceden yüklenmiş olup olmadığını silmeyi ve ardından içe aktarmayı yalnızca diğer uzantılar sorunuzda belirttiğinizle aynı yöntemi kullanıyorsa işe yarar. Sorun şu ki, hiçbir şey mükemmel değildir ve her zaman bazı uzantıların doğru yazıldığı ve diğerlerinin olmadığı yerlerde karşılaşırsınız, bu nedenle her zaman çatışma olasılığı olacaktır. Aslında bunu önlemek için düşünebilirsiniz tek yolu jQuery kolay kodu bakarak ve nasıl jQuery diğer örnekleri şerit görmek ve bunu kendiniz yapmaya çalışmaktır.

Güncellemesi

Her şey için takma ad olarak jQuery kullanmanız gerekmez. Tabii ki hepimiz $ kullanmaya alışkınız ama aslında jQuery varsayılan takma addır. Her şeyi halletmenin en iyi yolu onu bu şekilde kapsüllemektir:

jQuery.noConflict();

jQuery(document).ready(function($) {
    $("element").hide();
    // more code using $
});

Buradan sonra, yerel olarak kapsamlandırılmış bir takma ad olarak $ kullanmaya devam edebilirsiniz.

2
Lodder