سؤال

أنا أعمل على قائمة مختارة منسدلة. تضيف هذه القائمة جميع العناصر المحددة (التي يقوم بها مستخدم) إلى حاوية <Div> في شكل حقول مخفية. تحتوي هذه التحديدات على رابط يمنح المستخدم خيار إزالته من حاوية التحديد. في كل مرة يتم فيها تحديد اختيار جديد ، يربط الرمز تلقائيًا وظيفة في تغيير إزالة التحديد في الحالة التي ينقر عليها المستخدم على رابط Reomve ، شيء من هذا القبيل:

<div id = "selectCategories">
الفئة 1 remove_link
<type type = "hidden" value = "9524" name = "RecordIDS [] /> </viv>
<select>
<Poort> الفئة #2 < /Option>
<Poort> الفئة رقم 3 < /Option>
</select>

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

هذا يعمل بشكل جيد للغاية في Fire Fox و Safari ، لكنهما لا يعملون على الإطلاق من أجل IE. على الرغم من أنني أعيد الطعن في كل مرة لكل عنصر محدد ، إلا أن جميع الروابط تضيع والوحيدة التي تعمل هي العنصر الأخير الذي أضفته وملعوها بوظيفة الحذف.

سؤالي هو: هل هناك عامل عمل لهذا ، أو كيف يمكنني معالجة هذه المشكلة؟ لسوء الحظ ، IE هو متصفح الإنترنت الأكثر استخدامًا هناك :(

شكرًا لك

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

المحلول 3

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



 $('#deleteRecord1').bind('click',function() 
   { 
        // function here ...
   }
 );

$ ('#deleterecord2'). bind ('click' ، function () {// function هنا ...}) ؛


في وقت لاحق عندما أقوم بحذف Record1 ، أحتاج إلى إعادة ربط هذه الطريقة إلى Record2 ، سأفعل ذلك بهذه الطريقة لجعلها تعمل في IE 7 و 8



 $('#deleteRecordId').unbind('click');
 $('#deleteRecordId').bind('click',function() 
   { 
        // function here ...
   }
 );

في هذه الحالة ، يشير "المعرف" إلى معرف فريد من نوعه تم اختياره ، في هذا المثال يتوافق مع الرقم 2.

نصائح أخرى

هل أنت متأكد من أنك تستخدم الإصدار الصحيح من jQuery لاستخدام وظيفة Live؟ إنه جديد نسبيًا ، لذلك تحتاج إلى التأكد من أنك تستخدم أحدث إصدار.

يمكنك استخدام ال يعيش() وظيفة لربط كل مثيل لعنصر على الصفحة ، الحاضر والمستقبل. هذا يوفر لك الاضطرار إلى إعادة التوصيل.

$("a.removeLink").live("click", function() {
  $(this).next("input").remove();
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top