سؤال

هل هناك أي وظيفة JavaScript التي يمكن أن توحد وظيفة $ من كلا النموذج الأولي و jquery؟

نعم، هذه هي حالة الاستخدام الحقيقي الذي أتواجهه الآن. أجد وظيفة $ في النموذج الأولي و $ في JQuery تتعارض مع بعضها البعض. أعلم أننا يمكن أن نتمكن من jQuery.Nocisonfrict () على إعادة التشكيل إلى النموذج الأولي، ولكن من خلال القيام بذلك، سأضطر إلى إعادة كتابة رمز JavaCriript الخاص بجائق المسافة التي تستخدم وظيفة $، أو لديك مسج خاص في كتلة التعليمات البرمجية (على سبيل المثال. وظيفة مجهولة).

هل هناك أي طريقة أسهل، دون الحاجة إلى إعادة كتابة التعليمات البرمجية الموجودة في كلا المكتبة وإتاحتها في صفحة واحدة؟

قد يبدو الكود الذي يمكن الإجابة عليه على هذا السؤال بهذا الشكل، وتقدير ملاحظاتك بشكل كبير:

<script type="text/javascript" src="/path/to/prototype.js"></script>
<script type="text/javascript" src="/path/to/jquery.js"></script>
<script type="text/javascript">
/* <![CDATA[ */
var $j = jQuery.noConflict();
var $p = $; // reference to prototype's $
var $ = function(E, F){
  var isJQuery = true;

  //TODO: logic to determine which $ to use here YOUR SUGGESTION HERE ;-)

  var result = null;
  if(isJQuery){
    result = $j(E, F);
  } else { // prototype
    //TODO: code to delegate prototype $
  }

  return result;
}
/* ]]>*/
</script>

// ... any existing javacode jQuery and Prototype using $ function. 

شكرا.

تحديث: إعادة كتابة السؤال ليكون أكثر وضوحا.

هل كانت مفيدة؟

المحلول

حسنا، أولا وقبل كل شيء، نادرا ما أجد حالات مفيدة حيث يجب تضمين كل من المكتبات في نفس الصفحة. لذلك قد تفكر في إزالة واحدة.
أعتقد أن هذا يرجع إلى استخدام المكونات الإضافية، ولكن إلقاء نظرة على قائمة المكونات في الخصم، أنا متأكد تماما من وجود بديل.

ثانيا، للحصول على رمز مسج خاص بك، من السهل جدا إعادة كتابة ذلك، باستخدام خدعة الوظيفة المجهولة:

(function($){
  ... your code here ...
})(jQuery);

سيعمل ذلك في معظم الحالات التي لا تضع فيها المتغيرات أو الأساليب العالمية بدلا من ربطها بالأحداث.

نصائح أخرى

لقد وصلت دائما إلى عادة وضع كل قواعد المسج الخاصة بي في وظيفة، مماثلة لمثال Gizmo:

jQuery(function($) {
    // jQuery code here, using $
});

هذا هو نفسه الوثيقة. مستعادة معالج الأحداث.

JQuery's كان رائعا عن التأكد من لعبها بشكل جيد مع النموذج الأولي. تحقق من هذه الصفحة للحصول على التفاصيل، تجنب النزاعات مع المكتبات الأخرى.

لقد رأيت كلتا المكتبات المستخدمة في نفس الصفحات من قبل وهي عموما بسبب تطبيقات الطرف الثالث الموجودة في صفحاتك التي تستخدم مكتبة واحدة بينما تستخدم صفحاتك الأخرى. ومع ذلك، إذا كنت تفعل كل التطور بنفسك، أقترح الشائكة مع واحد أو آخر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top