ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programming[jquery] เวลาเรียก ajax ให้สร้างโค้ดมา แล้วทำไมมันใช้ไม่ได้
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: [jquery] เวลาเรียก ajax ให้สร้างโค้ดมา แล้วทำไมมันใช้ไม่ได้  (อ่าน 1639 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
tamiyalagu
คนรักเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 191



ดูรายละเอียด
« เมื่อ: 18 ธันวาคม 2009, 11:34:59 »

สมมุติมีโค้ดง่ายๆแบบนี้ เวลาเอาเม้าไปว่างไว้หน้าตัวเลข มันจะเปลี่ยนสี
พอคลิก มันจะไปดึงข้อมูลใน ajax.php มาแทนที่
แต่ปัญหาคือข้อมูลที่ดึงมาให้ เวลาเอาเม้าไปวางมันไม่เปลี่ยนสี มันมีทางแก้หรือเปล่าครับ

ไฟล์แรก
โค๊ด:
<script type='text/javascript'>
$(document).ready(function() {

$('#test span').hover(function(){
$(this).css("color","#0000FF");
});

$('#test').live( 'click' , function(){
$.get(ajax.php",function(data){
$("#test").html(data);
});
});

});
</script>

<div id='test'>
<span id='1'>111</span>
<span id='2'>222</span>
</div>

ส่วนไฟล์ ajax.php
โค๊ด:
<?echo "<span id='3'>333</span>";?>
« แก้ไขครั้งสุดท้าย: 18 ธันวาคม 2009, 11:39:58 โดย tamiyalagu » บันทึกการเข้า
@@@
Administrator
สมุนแก๊งเสียว
*

พลังน้ำใจ: 33
ออฟไลน์ ออฟไลน์

กระทู้: 634



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 18 ธันวาคม 2009, 11:43:08 »

สมมุติมีโค้ดง่ายๆแบบนี้ เวลาเอาเม้าไปว่างไว้หน้าตัวเลข มันจะเปลี่ยนสี
พอคลิก มันจะไปดึงข้อมูลใน ajax.php มาแทนที่
แต่ปัญหาคือข้อมูลที่ดึงมาให้ เวลาเอาเม้าไปวางมันไม่เปลี่ยนสี มันมีทางแก้หรือเปล่าครับ

ไฟล์แรก
โค๊ด:
<script type='text/javascript'>
$(document).ready(function() {

$('#test span').hover(function(){
$(this).css("color","#0000FF");
});

$('#test').live( 'click' , function(){
$.get(ajax.php",function(data){
$("#test").html(data);
});
});

});
</script>

<div id='test'>
<span id='1'>111</span>
<span id='2'>222</span>
</div>

ส่วนไฟล์ ajax.php
โค๊ด:
<?echo "<span id='3'>333</span>";?>

เจ้า jquery นี้ไม่รู้เค้าใช้กันยังงัยไม่ค่อยได้ใช้ด้วยสิ
อยากรู้เหมือนกัน
บันทึกการเข้า

รับซื้อเว็บ 100uip ต่อวันขึ้นไป EA Forex
Aussawinning
สมุนแก๊งเสียว
*

พลังน้ำใจ: 109
ออฟไลน์ ออฟไลน์

กระทู้: 930



ดูรายละเอียด
« ตอบ #2 เมื่อ: 18 ธันวาคม 2009, 11:58:51 »

สมมุติมีโค้ดง่ายๆแบบนี้ เวลาเอาเม้าไปว่างไว้หน้าตัวเลข มันจะเปลี่ยนสี
พอคลิก มันจะไปดึงข้อมูลใน ajax.php มาแทนที่
แต่ปัญหาคือข้อมูลที่ดึงมาให้ เวลาเอาเม้าไปวางมันไม่เปลี่ยนสี มันมีทางแก้หรือเปล่าครับ

ไฟล์แรก
โค๊ด:
<script type='text/javascript'>
$(document).ready(function() {

$('#test span').hover(function(){
$(this).css("color","#0000FF");
});

$('#test').live( 'click' , function(){
$.get(ajax.php",function(data){
$("#test").html(data);
});
});

});
</script>

<div id='test'>
<span id='1'>111</span>
<span id='2'>222</span>
</div>

ส่วนไฟล์ ajax.php
โค๊ด:
<?echo "<span id='3'>333</span>";?>

ลองเปลี่ยนเป็น $('#test span').live('hover', ...

ได้มั้ยครับ
บันทึกการเข้า
tamiyalagu
คนรักเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 191



ดูรายละเอียด
« ตอบ #3 เมื่อ: 18 ธันวาคม 2009, 12:03:12 »

ไม่ได้ครับ
บันทึกการเข้า
g-ji
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 231
ออฟไลน์ ออฟไลน์

กระทู้: 3,254



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 18 ธันวาคม 2009, 12:31:05 »

สมมุติมีโค้ดง่ายๆแบบนี้ เวลาเอาเม้าไปว่างไว้หน้าตัวเลข มันจะเปลี่ยนสี
พอคลิก มันจะไปดึงข้อมูลใน ajax.php มาแทนที่
แต่ปัญหาคือข้อมูลที่ดึงมาให้ เวลาเอาเม้าไปวางมันไม่เปลี่ยนสี มันมีทางแก้หรือเปล่าครับ

ไฟล์แรก
โค๊ด:
<script type='text/javascript'>
$(document).ready(function() {

$('#test span').hover(function(){
$(this).css("color","#0000FF");
});

$('#test').live( 'click' , function(){
$.get(ajax.php",function(data){
$("#test").html(data);
});
});

});
</script>

<div id='test'>
<span id='1'>111</span>
<span id='2'>222</span>
</div>

ส่วนไฟล์ ajax.php
โค๊ด:
<?echo "<span id='3'>333</span>";?>

เอาเฉพาะตัวเปลี่ยนสีละกัน ดึงข้อมูลได้อยู่แล้วนิ ??

จากโค้ดนะ

<div id='test'>
   <span id='1'>111</span>
   <span id='2'>222</span>

แนะนำว่า ให้เพิ่ม class เข้าไปที่ตัว span เช่น

<div id='test'>
   <span id='1' class='red'>111</span>
   <span id='2' class='red'>222</span>

ตัว jquery ก็แก้เป็นแบบนี้

/*สามารถกำหนดสีดั้งเดิมไปเลยก็ได้*/

$('#test span').css({"color","black"});

/*เมื่อเอาเมาส์วางไว้บน คลาสนี้ จะกลายเป็นแดง*/

$('#test .red').mouseover(function(){
      $(this).css("color","red");
   });

/*พอเอาเมาส์ออกก็เปลี่ยนสีกลับ แนะนำให้ใส่สีเดียวกับที่ใช้เดิม*/

$('#test .red').mouseoutr(function(){
      $(this).css("color","black");/*ใส่สีอะไรก็ได้*/
   });


ตัวอย่างนะ ลองๆ ปรับใช้ดู

บันทึกการเข้า

tamiyalagu
คนรักเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 191



ดูรายละเอียด
« ตอบ #5 เมื่อ: 18 ธันวาคม 2009, 12:55:13 »

สมมุติมีโค้ดง่ายๆแบบนี้ เวลาเอาเม้าไปว่างไว้หน้าตัวเลข มันจะเปลี่ยนสี
พอคลิก มันจะไปดึงข้อมูลใน ajax.php มาแทนที่
แต่ปัญหาคือข้อมูลที่ดึงมาให้ เวลาเอาเม้าไปวางมันไม่เปลี่ยนสี มันมีทางแก้หรือเปล่าครับ

ไฟล์แรก
โค๊ด:
<script type='text/javascript'>
$(document).ready(function() {

$('#test span').hover(function(){
$(this).css("color","#0000FF");
});

$('#test').live( 'click' , function(){
$.get(ajax.php",function(data){
$("#test").html(data);
});
});

});
</script>

<div id='test'>
<span id='1'>111</span>
<span id='2'>222</span>
</div>

ส่วนไฟล์ ajax.php
โค๊ด:
<?echo "<span id='3'>333</span>";?>

เอาเฉพาะตัวเปลี่ยนสีละกัน ดึงข้อมูลได้อยู่แล้วนิ ??

จากโค้ดนะ

<div id='test'>
   <span id='1'>111</span>
   <span id='2'>222</span>

แนะนำว่า ให้เพิ่ม class เข้าไปที่ตัว span เช่น

<div id='test'>
   <span id='1' class='red'>111</span>
   <span id='2' class='red'>222</span>

ตัว jquery ก็แก้เป็นแบบนี้

/*สามารถกำหนดสีดั้งเดิมไปเลยก็ได้*/

$('#test span').css({"color","black"});

/*เมื่อเอาเมาส์วางไว้บน คลาสนี้ จะกลายเป็นแดง*/

$('#test .red').mouseover(function(){
      $(this).css("color","red");
   });

/*พอเอาเมาส์ออกก็เปลี่ยนสีกลับ แนะนำให้ใส่สีเดียวกับที่ใช้เดิม*/

$('#test .red').mouseoutr(function(){
      $(this).css("color","black");/*ใส่สีอะไรก็ได้*/
   });


ตัวอย่างนะ ลองๆ ปรับใช้ดู



เอ.. อันนี้มันก็ไม่ได้แก้อะไรนี่ครับแค่เปลี่ยนวิธีเรียกในส่วนเปลี่ยนสี
แต่จุดที่เป็นประเโ็นหลัก คือ object ที่ถูกสร้างจาก ajax มันจะไม่รู้จัก จะทำยังไงให้มันรู้จักอ่ะครับ
บันทึกการเข้า
tamiyalagu
คนรักเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 191



ดูรายละเอียด
« ตอบ #6 เมื่อ: 18 ธันวาคม 2009, 13:42:00 »

ตอนนี้พอจะได้บ้างแล้วครับ

ต้องใช้คำสั่ง live ในทุกส่วนเลยครับ
 
บันทึกการเข้า
suphot.s
ก๊วนเสียว
*

พลังน้ำใจ: 78
ออฟไลน์ ออฟไลน์

กระทู้: 486



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 18 ธันวาคม 2009, 14:09:14 »

ใช่แล้วครับ
เพราะว่า jQuery จะไม่รู้จัก object ที่โหลดเข้ามาใหม่
วิธีแก้ให้ใช้ live หรือไม่ก็ reblind event ใหม่ ใน function get อ่ะคับ
« แก้ไขครั้งสุดท้าย: 18 ธันวาคม 2009, 14:15:35 โดย suphot.s » บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์