2011-07-13 17 views
0

我试图从我的php脚本$ row ['coupon_id']中的id属性传递一个值给jquery,但每次点击链接时警告框都会保留弹出相同的ID,例如在我的情况下,'147'代表所有被点击的链接,而不是显示出从我的数据库中提取的不同ID。将属性值从PHP MYSQL传递给jQuery iFrame

任何人都可以借我一把吗?

<script type='text/javascript' src='js/jquery-1.6.1.min.js'></script> 

<script type="text/javascript"> 
$(document).ready(function() { 
    function toggleDivs() { 
     var deal_id = $('.buttonClicked').attr('id'); 
     alert(deal_id);  
} 

    $('.buttonClicked').click(function(){ 
     toggleDivs(); 
    }); 
});  
</script> 

<?php 
    include('include/class_dbcon.php'); 
    $connect = new doConnect(); 
    $query_pag_data = "SELECT * FROM coupons " 
         . "WHERE coupon_status = 1 " 
         . " ORDER BY coupon_id DESC LIMIT 12"; 

    $result_pag_data = mysql_query($query_pag_data); 
    $msg = ""; 
    while($row = mysql_fetch_array($result_pag_data)) { 
    $msg .= "<span class='buttonClicked' id='" 
      . $row['coupon_id'] 
      . "'><a href='#'>Detail</a></span></br>"; 
     } 

echo $msg; 

?> 

<div id='iframecall'></div> 

感谢 消防

回答

1

事件处理程序的错误,将其更改为:

function toggleDivs() { 
    var deal_id = this.id; 
    alert(deal_id);  
} 

$('.buttonClicked').click(toggleDivs); 

您的原始代码没有考虑被点击哪个元素。对$('.buttonClicked').attr('id')的调用获得了一组所有链接,并返回了该集合中第一个链接的ID。

+0

感谢@searlea这是一个伟大的1.顺便说一句,我可以检查你是否有可能将live()整合到函数中?例如$('。buttonClicked')。live('click',function(){\t \t \t \t toggleDivs(); });因为目前所有的mysql事件都会使用ajax在不同的页面中进行处理。因此,如果该事件位于不同的页面上,则无法触发该事件。任何想法呢? Thx – Fire

+0

当然......,但是如果你不需要,你应该*避免*无意义地将东西包装在'function(){...}中。如果你一直这样包装,你会在回调函数中失去'this'的魔力。 – searlea

+0

Hi @searlea,我试图在活动函数'$('。buttonClicked')。live('click',function(){toggleDivs();});'中包含toggleDivs并且根据您提供的输入当链接被点击时,我最终遇到了“undefined”错误。似乎没有解决这个问题。无论如何,我怎么能解决这个问题?除了使用函数'this.id'来获取值之外,还有其他方法来获取值吗?感谢火 – Fire