سؤال

وأنا أحاول لتحميل كل ما عندي من صفحات الموقع باستخدام مسج طريقة .load ذلك، أن يكون كيف تبدو موقعي:

<script type="text/javascript">  
  $(function() {
    $('.link').bind('click', function(e) {
            var page = $(this).attr('href');
            $('#site').addClass('loading');
            $('#content').load(page, function (){
            $('#site').removeClass('loading');
    });

    e.preventDefault();
    return false;
  });

<a href="test.php" class="link">Test</a>

مع هذا الرمز، كل وصلة أن يحصل على الدرجة = "وصلة" سيتم تحميل صفحتي على #content شعبة. يعمل بشكل جيد! أي مشاكل ولكن عندما كنت تحميل test.php، إذا كنت تستخدم الطبقة = "وصلة" على أي رابط أو زر، أو أيا كان، هو فقط لا يعمل وصفحة جديدة يتم تحميل خارج بلدي #content.

وحاول إذا نسخ هذا الملف الجديد محملة وأنها لا تعمل، أي شخص حصل تلميحا؟

والشكر

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

المحلول

وذلك لأن عند ربط حدث فإنه يلزم فقط على العناصر التي هي في DOM في ذلك الوقت. حتى إذا قمت بإضافة وقت لاحق جديدة على أنها لن تكون ملزمة إلى الحدث الذي تعلق سابقا. بفرض أن لديك مسج 1.3، لديه وظيفة المدمج في للالتفاف حول هذا يسمى live . مع ذلك، يمكنك ربط حدث لجميع العناصر الحالية والمستقبلية. أنها لا تدعم جميع الأحداث، ولكن click يفعل الدعم.

وهكذا حفظ ذلك في الاعتبار، عليك أن تحل محل هذه:

$('.link').bind('click', function(e) {

ومع هذا:

$('a.link').live('click', function(e) {

و(I أضاف أ. لمحدد لأنه أكثر كفاءة بكثير لتحديد علامة إذا كان ذلك ممكنا)

إذا لم يكن لديك مسج 1.3، يجب عليك الترقية في أقرب وقت ممكن. إذا كنت لا تستطيع، تحقق من livequery البرنامج المساعد الذي يحقق نفس الشيء ولكن في كثير طريقة أقل أناقة. بدلا من ذلك، هل يمكن أن يكون مجرد وظيفة لربط العمل والذي يطلق عليه في كل مرة قمت بتحميل بيانات جديدة في جميع الأمور في الاعتبار، ومع ذلك، live مسج هو أفضل طريقة للقيام بذلك.

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