سؤال

وأنا ملزم الأحداث الحية على وصلات في بلدي التطبيق فونغاب . هذا الحدث لا إطلاق النار بنجاح (أكدته alert()ing)، ولكن يبدو لا يتم إرفاق أي بيانات اتصال لكائن الحدث كما ينبغي أن يكون. يحدث هذا على جميع الأحداث التي تعمل باللمس - touchstart، touchmove، وtouchend

$('a').live('touchend', function(event) {
  event.preventDefault();
  alert(event.touches.length); // event.touches should be populated!
});

وأي أفكار؟ هل أنا SOL مع jQuery.live ()؟

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

المحلول

وغير معتمدة الأحداث مسة حاليا فعاليات / يعيش .

ومن الوثائق:

<اقتباس فقرة>   

والقيم الحدث المحتمل: انقر،   dblclick، mousedown، mouseup،   mousemove، عند تمرير الماوس، mouseout،   KeyDown و بضغطة، keyup

     

حاليا غير معتمدة: طمس، والتركيز،   mouseenter، mouseleave، التغيير، تقديم

وقد ترغب في النظر في محاولة لاستخدام انقر إذا بحيث تلائم الاحتياجات الخاصة بك، أو يمكنك التبديل إلى استخدام <لأ href = "http://docs.jquery.com/Plugins/livequery" يختلط = "نوفولو noreferrer" > livequery ، والتي ربما سوف يعتمد عليه. (livequery هو ما يعيش استند في الأصل على، وأنا لست متأكدا من السبب في أنه لا يدعم كل من نفس الأحداث)

نصائح أخرى

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

وهكذا سوف تحتاج رمز المثال لتبدو كما يلي:

$('a').live('touchend', function(event) {
  event.preventDefault();
  console.log(event.originalEvent.touches.length);
});

وهنا هي الخصائص التي يتم نسخها عبر: HTTP: / /github.com/jquery/jquery/blob/master/src/event.js#L411

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