View Full Version : سوال: ارسال پارامتر به توابع jQuery
rastac
یک شنبه 03 دی 1391, 22:11 عصر
سلام
میخاستم بدونم چطوری میشه به هر کدام از المانهای موجود در صفحه یک آرگومان مخصوص داد و سپس این آرگومانها رو به توابعی که می خواهیم در جیکوئری تعریف کنیم ، ارسال کنیم؟ تا اونجایی که من اطلاع دارم هنگامی که جیکوئری می نویسیم، (بر خلاف js که رویدادها و نام تابع را در خود المان مربوطه مینویسیم) نام تابع و رویداد مربوطه بیرون از المان و در داخل خود اسکریپت جیکوئری نوشته میشه . پس در این صورت چطور میشه برای هر المان یک آرگومان جداگانه در نظر بگیریم و سپس با یک تابع در جیکوئری آرگومان هر المان رو دریافت کنیم؟
ممنون میشم اگر راهنمایی کنید.
hakan648
دوشنبه 04 دی 1391, 01:14 صبح
سلام
کاملا متوجه فرمایشتون نشدم ، اما در JavaScript ِ خالی هم حتما نیازی نیست که رویدادها در خود المان تعریف بشن ، میشه داخل کدهم رویدادهارو مدیریت کرد :
<input type="text" id="mytextbox"/>
var myTextBox = document.getElementById("mytextbox");
myTextBox.onfocus = function() {
alert("mytextbox is now focused!");
};
حالا با توجه به توضیح فوق ، دقیقتر توضیح بدید که منظورتون چیه.
rastac
دوشنبه 04 دی 1391, 11:08 صبح
ممنون از توضیحت.
اما سوال اصلی من اینه که چطوری میشه برای هر المان یک آرگومان مخصوص در نظر گرفت و این آرگومانها رو در توابع جیکوئری دریافت کرد؟البته منظورم از توابع جیکوئری توابعیه که خودمون در جیکوئری تعریف می کنیم.
hakan648
دوشنبه 04 دی 1391, 20:05 عصر
همین توضیح رو در خود تاپیک قرار داده بودید ، اما بنده متوجه نشدم. با یک مثال کامل توضیح بدید که قصد انجام چه کاری رو دارید.
rastac
سه شنبه 05 دی 1391, 10:25 صبح
من در داخل صفحه چند تا عکس دارم.میخام در داخل همه تگهای <img> یک تابع واحد تعریف کنم و سپس توسط رویداد کلیک آرگومان منحصر به فرد هر تگ رو برای تابع جیکوئری ارسال کنم:
<img src=' ' onclick='show(1)' />
<img src=' ' onclick='show(2)' />
<img src=' ' onclick='show(3)' />
حالا می خام در داخل جیکوئری تابع show رو تعریف کنم.سوال من اینه که اگر روی عکس 1 کلیک شد آرگومان "1" رو چه طوری در تابع show در یافت کنم.و همین طور در مورد بقیه تگها.
هدف من از کل این کار ایجاد یک آلبوم تصویریه. به این صورت که بعد از کلیک روی هر عکس ، آرگومان مربوط به اون رو به تابع show بفرستم و توسط اون تابع همون عکس رو به صورت بزرگ نمایش بدم. و بعد هنگامی که کاربر روی دکمه های عقب رو و جلو رو(که اونها رو جداگانه ایجاد کردم) کلیک کرد، توسط متد هایی مثل next یا previous عکس های قبلی یا بعدی رو نمایش بدم.برای همین احتیاج دارم به اینکه بدونم کاربر روی کدوم عکس کلیک کرده (یعنی آرگومانی رو که ارسال کرده داشته باشم) ، تا اگر روی عکس بعدی یا قبلی کلیلک کرد من هم بتونم اون عکس ها رو نمایش بدم.
امیدوارم تونسته باشم منظورم رو برسونم.
hakan648
سه شنبه 05 دی 1391, 12:05 عصر
میتونید رویداد مورد نظر برای همه تگ های مورد نظر رو مدیریت کنید و هنگام فراخوانی رویداد ، به تگی که رویداد براش اتفاق افتاده دسترسی داشته باشید و به این ترتیب هرمقداری که در تگ وجود داره رو دریافت کنید.
پس نه نیاز دارید که رویداد رو در خود تگ تعریف کنید و نه نیاز دارید که مقدار رو بصورت پارامتر برای رویداد ارسال کنید.
برای مثال توسط jQuery رویداد click رو برای همه ی تگ های تصویری که در داخل یک تگ با کلاس slideshow هستند مدیریت میکنیم و آدرس تصویر تگی که کلیک شده رو دریافت میکنیم و نمایش میدیم :
$(".slideshow img").click(function () {
var imageSrc = $(this).attr("src");
alert(imageSrc);
});
برای نمایش عکس بصورت بزرگتر هم میتونید با همین آدرس تصویر کار کنید. ( مثلا آدرس تصویر بزرگتر برابر با آدرس تصویر کوچکتر + "_bigger" باشه یا ... )
اگر مایل بودید یک مقدار مجزایی در داخل تگ داشته باشید و اون رو دریافت کنید ، میتونید به این صورت عمل کنید :
<div class="slideshow">
<img src="/images/pic1.jpg" data-customkey="1" />
<img src="/images/pic2.jpg" data-customkey="2" />
</div>$(".slideshow img").click(function () {
var customKey = $(this).attr("data-customkey");
alert(customKey);
});
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.