PDA

View Full Version : سوال: محتوای برگردانده شده با ایجکس و یک مشکل



bluetooth153
جمعه 26 آبان 1391, 14:10 عصر
سلام
وقت بخیر
من تازه کارم و دارم رو ایجکس کار میکنم . من میخوام کاربر با تایپ کاراکتر در یک تکست باکس تمام فیلدهایی که در بانک با این کاراکتر ها آغاز میشن رو لیست کنه به این شکل :

$("#to").keyup(function() {
$.ajax({
type: 'POST',
url: 'getData.php',
data: {username: $('#to').val()},
success: function(data) {
$('#offer').show().html(data);
}
});
});
سمت سرور هم به این شکل اطلاعات رو میفرستم به بانک :

$pattern=@$_POST['username'];
$result=mysql_query("SELECT name FROM tbl_name WHERE name LIKE \"$pattern%\" ORDER BY name " );
if($result){
while($row=mysql_fetch_array($result)){
echo "<li>".$row['name']."</li> ";
}
}

خوب تا اینجا سوالم اینه که این روش درسته یا مشکلی توش هست؟
بعد مشکلی که من با همین مثال دارم اینه که اطلاعاتی که برگردونده میشه دیگه نمیتونم به عنوان سلکتور برای رویداد هام ازشون استفاده منم . ببینید این کد زیر هیچ عمل خاصی رو انجام نمیده :

$("#offer li").click(function(){
$('#to').val($(this).html());
$('#offer').html('').hide();
});
در صورتی که li ها وجود دارن و میشه اونها رو show و hide کرد.
ممنونم اگه راهنمایی کنید

plague
جمعه 26 آبان 1391, 18:19 عصر
کدت به نظر درست میاد احتمالا یا مشکل سینتکس داری یا اسم آیدی یه المنت رو اشتباه نوشتی
فایرباگ نصب کن متوجه میشی مشکل چیه

bluetooth153
جمعه 26 آبان 1391, 21:17 عصر
درسته همه چیز
ببینید من خودم که دستی و به صورت استاتیک چند تا <li> میزارم اونا درستن و کامل بدون مسکل اجرا میشه ولی تگ هایی که از سمت php گرفته میشن مشکل داره. حتی من وقتی تعداد فرزند های #offer رو آلرت میکنم کاملا درسته و مثلا 4 تا فرزند رو شناسایی میکنه و میتنم li ها رو با تابع side یا fadeout مخفیی کنم تنها مشکلی که دارم اینه که نمیتونم براشون رویداد تعریف کنم.

plague
شنبه 27 آبان 1391, 01:02 صبح
اها حواسم نبود شما باید live یا delegate استفاده کنی برای المنت هایی که بعدا به صفحه اضافه میشن
چون وقتی برای بار اول صفحه لود میشه تمام المنت ها یبار خونده میشن و همه رویداد ها و توابع به همونا نسبت داده میشه و المنت هایی که بعدا به صفحه اضافه میشن یجورایی آدم حساب نمیشن
اینجوری باید بنویسی

$("#offer li").live('click' , function(){
البته live رو deprecate اعلام کرده بود جی کوئری و قراره جایگزین بشه با on بسته به ورژن جی کوئری که استفاده میکنی ممکنه اولی یا دومی جواب بده