PDA

View Full Version : اضافه کردن مقادیر جدید با .html() و واکنش نشان ندادن به رویدادها



peyman_abdollahy
پنج شنبه 17 بهمن 1392, 20:43 عصر
وقتی عنصری مثل <img> را به صفحه توسط .html() اضافه می کنم، وقتی می خواهم این عنصر جدید بعد از کلیک شدن واکنش نشان دهد و یا به محتویاتش دسترسی داشته باشم. این اتفاق نمی افتد.
این رفتار برای لود و کار با ajax هم مشکل ایجاد می کند. راه حلی هست؟

2undercover
پنج شنبه 17 بهمن 1392, 21:25 عصر
این بدلیل اینه که وقتی با متد html کدی رو به صفحه اضافه می کنید به DOM اضافه نمیشه.

راه حل: استفاده از متد append (http://api.jquery.com/append/) یا appendTo (http://api.jquery.com/appendTo/)

peyman_abdollahy
پنج شنبه 17 بهمن 1392, 21:38 عصر
این دو تابع اطلاعات قبلیو از بین نمی برن، من می خوام اطلاعات قبلی از بین برن و اطلاعات جدید جاشونو بگیره. مثلا ی فرمیو با ajax لود می کنم تو فرم لود شده هم می خوام ی فرم دیگه با ajax لود کنم منتهی چون به عناصر فرم دسترسی ندارم دچار مشکل میشم

Javidhb
پنج شنبه 17 بهمن 1392, 22:44 عصر
وقتی با جاوااسکریپت یه المنت رو به صفحه اضافه میکنید باید به روش زیر بهش رویداد مدنظرتون رو اضافه کنید:
(img در کد زیر با js بصفحه اضافه شده)

$(document).on('click', 'img', function(){
alert('clicked on img');
});


DOM که دارید توی jQuery باهاش کار میکنید، هیچ اطلاعاتی راجع به المنتی که به صفحه اضافه کردید نداره، در نتیجه نمیتونه هیچ رویدادی رو براش ثبت کنه.
اما وقتی از روش بالا استفاده کنید.. به jQuery میگید که بره کل document رو دوباره بگرده و المنت مد نظرتون رو پیدا کنه.

دمــو (http://jsfiddle.net/V82Xy/2/)

peyman_abdollahy
پنج شنبه 17 بهمن 1392, 23:01 عصر
به جای 'img' میشه سلکتور گذاشت؟ منظورم اینه که نسبت به ی ابجکت با ای دی مشخص حساسش کنیم، یا ی عکس خاص ن همشون.
تست کردم با ای دی هم کار کرد.
دمت گرم رفیق!

azamicu
جمعه 18 بهمن 1392, 15:36 عصر
سلام دوست عزیز اگه از jquery v 1.9 به پایین استفاده میکنی از live استفاده بکن و اگر از ورژن 1.10 به بعد استفاده میکنی از on استفاده کن مشکلت حل میشه