موتولس:إجراء عمليات رد اتصال من Ajax للعمل مع العنصر الذي تم النقر عليه
-
21-12-2019 - |
سؤال
لنفترض أن لدي عددًا من الروابط ذات اللون الأحمر، وأريد إضافة حدث نقرة إليها بحيث عندما يتم تشغيله، يرسل سمة HREF الخاصة بالارتباط إلى الخادم (كطلب AJAX)، وعند النجاح، سيتم تغيير لون الرابط إلى اللون الأخضر.أريد شيئًا مثل:
$$('a.red').addEvent(
"click",
function () {
new Request.JSON({
url: 'script.php',
onSuccess: function(){
[the link wich is clicked].setStyle('color', 'green');
return false;
}
}).get("url="+[url of the link]);
}
);
آسف إذا كان السؤال سخيفا.يرجى تعديل العنوان لبعض المعقول.
المحلول
المشكلة هنا هي أن this
داخل معالج الحدث ليس هو نفسه this
داخل فئة الطلب.إذن ما يتم فعله عادةً هو تغيير المرجع إلى this
في متغير جديد، على سبيل المثال var self = this
.
بعد ذلك يمكنك استخدام self.setStyle('color', 'green');
بالمناسبة، الاقتراح الأفضل هو أن يكون لديك أيضًا فئة للون الأخضر وتبديلها عند النقر.
إذن هنا اقتراح الكود سيكون:
$$('a.red').addEvent("click", function (event) {
var self = this;
event.stop();
new Request.JSON({
url: 'script.php',
onSuccess: function () {
self.removeClass('red').addClass('green');
return false; // I added event.stop(), presume that is what you meant. Do this line can be removed
}
}).get("url=" + self.href);
});
واستخدامه في CSS شيء مثل:
.green {
color: green;
}
مثال
لا تنتمي إلى StackOverflow