سؤال

لدي بعض <tr> العناصر على الصفحة مع click() الحدث تعلق على الصورة التي يجلس داخل كل واحدة.أنا استخدم هذا الكود

$(this).clone(true).appendTo("table#foo");

إلى القيام بما يلي:

  • نسخ تلك <tr>s في جدول مختلف
  • الحفاظ على فوق الأحداث على الصور داخل <tr>s (بسبب true الحجة)

كل ذلك يعمل بشكل جيد.الآن لدي إضافة مسج اسمع الحدث إلى تلك <tr>s, حتى أن المستخدم لا يجب أن تهدف على وجه التحديد:وقال انه/انها يمكن انقر في أي مكان على <tr> وأنا يمكن أن تمر انقر على الصورة.

انها مشفرة مثل هذا:

$('tr.record').listen('click','td',function(){
  $(this).parent().find("img.clickable").click();
});

الاستماع() الحدث يعمل بشكل جيد على العنصر الأصلي ، ولكن على المستنسخة البند الاستماع() حدث فشل. الصورة انقر فوق الحدث لا يزال يعمل بشكل جيد.

هنا هو ما الحرائق يقول لي:

m(this, e.type) is undefined

و يشير السطر 9 من jquery.listen-1.0.3-min.js.

كيف يمكنني الاستماع() الحدث عمل على استنساخ العناصر ؟

التحديث

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

وفي الوقت نفسه صاحب الاستماع() المساعد اقترح استراتيجية مختلفة - انظر جوابي أدناه.

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

المحلول

ارييل Flesler خالق الاستماع() المساعد, قدم لي هذه النصيحة عبر البريد الإلكتروني:

"أعتقد أن هذا يمكن حلها بطريقة أخرى.فكرة الاستماع (و الحدث الوفد) هو في الواقع تجنب جميع النسخ من الأحداث عناصر جديدة."

"يمكنك أن تفعل ببساطة:"

$('table#foo').listen('click','td',function(){
 $(this).parent().find("img.clickable").click();
});

"أو حتى:"

$.listen('click','td',function(){
 $(this).parent().find("img.clickable").click();
});

"المثال الأول سوف استخدم الجدول كما المستمع.في واحد 2 ، <html> الوسم يستخدم.لذلك لا يهم إذا قمت بإضافة جديدة td/tr/الجداول.سوف لا تزال تعمل."

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