Javascript 只处理jQuery函数一次

Javascript 只处理jQuery函数一次,javascript,jquery,Javascript,Jquery,HTML和PHP 我列出机票信息 当用户单击复选框时,处理jquery脚本以使用奖金计算折扣,并将返回的数据写入ticketPrice ID。但有多个复选框,如果用户再次单击另一个复选框脚本,则计算折扣,但我不这样做。我怎么能只处理一次呢 我的jquery代码 function useMyBonus(){ myBonus = parseInt($("#myBonus").text()); ticketPrice = parseInt($("#tic

HTML和PHP

我列出机票信息


当用户单击复选框时,处理jquery脚本以使用奖金计算折扣,并将返回的数据写入ticketPrice ID。但有多个复选框,如果用户再次单击另一个复选框脚本,则计算折扣,但我不这样做。我怎么能只处理一次呢

我的jquery代码

  function useMyBonus(){
    myBonus         = parseInt($("#myBonus").text());
    ticketPrice     = parseInt($("#ticketPrice").text());
    checked         = $("#myBonusId").is(':checked');



    if(checked == true){
        $("#ticketPrice").text(ticketPrice-(myBonus/2));

    }else{
        $("#ticketPrice").text(ticketPrice+(myBonus/2));

    }
} 

您可以使用复选框中的任何标志来提醒尚未执行的操作(如addClass或jQuery.data),并在开始函数检查该类或数据时,如果它已经存在,只需返回。

因为您在循环中创建了复选框,所以所有复选框都具有相同的
id
和“onclick”函数,所以无论何时单击该复选框函数中的任何一个,都会得到调用,所以将唯一id设置为checkbox并设置函数:

$('#uniqueId').click(function(){
//do your work here
});

或者在循环中,将
onclick
函数设置为只调用该函数。

这将确保您的复选框是唯一的-

<table>      
<?php
$i=0;
      while($values = mysql_fetch_array($ticketInfo)){ 
        echo '<tr>';
        echo '<td id="ticketPrice">'. $values['ticket_price'] .'</td>';
        echo '<td>'. $values['bonus']*5 .'</td>';
        echo '<td><input type="checkbox" name="use_bonus" value="' .$i++ . "_" . $values['ticket_price']  . '"  /></td>';
        echo '</tr>';
      }      
      ?>
      </table>

这将遍历所有复选框并继续计算

 <script type="text/javascript">
    function useMyBonus()
    {
        var myBonus=0;


        checkboxes = document.getElementsByName('use_bonus');

        for(var i in checkboxes)
        {
            if(checkboxes[i].checked)

            {
                          var n=str.split("_");
                          //now your ticket price would be n[1], use n[1] for your bonus calculation 
                        //calculate myBonus         
            }           


        }
    }

    </script>

函数useMyBonus()
{
var-myBonus=0;
复选框=document.getElementsByName('use_bonus');
用于(复选框中的var i)
{
如果(复选框[i]。选中)
{
var n=str.split(“”);
//现在您的票价将为n[1],使用n[1]计算奖金
//计算我的奖金
}           
}
}

你能显示jQuery代码吗?你应该用javascript绑定事件处理程序(而不是像现在那样用html),并在执行时解除绑定。最好是在不使用PHP代码的情况下发布呈现的标记。顺便说一下,你的表单肯定会失败,因为你有多个元素具有相同的
名称
属性。除@jeroen comment外,你的标记也会失败,因为你有多个元素具有相同的ID。诚然,@prestack,在循环中创建ID时要非常小心,尽管导航器没有对此抱怨,那是错误的代码。谢谢你的帮助和评论。我是JS/Jquery新手。我会注意ID:)谢谢你提醒我,现在我已经修改了代码,使其为1_42、2_42、3_56等等……基本上我已经确保了一个运行计数,后跟一个下划线,后跟票价,会给我一个唯一的字符串,然后我在javascript中拆分它们并使用票价n[1]为了我的奖金计算