سؤال

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

لدي نموذج باستخدام Textareas متعددة، يحصل كل معرف مثل f_id_dsc000001.jpg حيث الجزء الأخير هو رقم صورة فوتوغرافية، يحتوي Textarea على حدث OnBlur يستخدم منشورا لإرسال محتوياته وتحديث جدول قاعدة البيانات، ويعود استجابة JSON. كل ذلك يعمل بشكل جيد، أستطيع أن أرى النتائج باستخدام Firebug، لا توجد مشاكل هناك.

تعود DSC000001.jpg جزء من المعرف مرة أخرى في استجابة JSON كأقل تأكيد، ثم أريد تغيير فئة TextArea لإظهار حالة التحديث.

عندما أفعل هذا

var textarea_selector="#f_id_"+res_data.image_filename;
$(textarea_selector).removeClass("kw-class");
$(textarea_selector).addClass("update-failed");

الطبقة لا تتغير، ولكن إذا قمت بذلك

$("textarea[id*='"+res_data.image_filename+"']").removeClass("kw-class");
                  $("textarea[id*='"+res_data.image_filename+"']").addClass("update-done");

أنه يعمل بشكل جيد.

أنا لست خبير جافا سكريبت / مسج :-( لذلك تفسير أساسي هو ما أقدره حقا.

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

المحلول

لديك نقطة في هويتك. وهذا يفسر على أنه محدد الطبقة:

#f_id_DSC000001.JPG
\_____________/\__/
 id             class

ولكن هذا يجب أن يعمل:

var textarea_element = document.getElementById("f_id_"+res_data.image_filename);
$(textarea_element).removeClass("kw-class").addClass("update-failed");

أو هذا:

var textarea_id = "f_id_"+res_data.image_filename;
$("[id="+textarea_id+"]").removeClass("kw-class").addClass("update-failed");

نصائح أخرى

يجب أن تكون حذرا حول الهروب من الشخصيات الغريبة في معرفاتك. يرى الأسئلة الشائعة jquery للمزيد من.

يبدو أنك تدعو معرفتين مختلفتين. لماذا تقبل "#f_id" في المثال الأول؟ يجب أن تكون قادرا فقط على إلحاق "#" بمعرف عنصر وتحديدها على ما يرام.

محاولة:

var textarea = $("textarea[id*='"+res_data.image_filename+"']");
textarea.removeClass("kw-class");
textarea.addClass("update-failed");

أنت لا تبني المحدد كما هو مثال في مشاركتك، ولهذا السبب فشل. هذا الحل الذي تقوم به فقط الاختيار مرة واحدة.

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