函数指针赋值不起作用

时间:2016-12-29 17:03:35

标签: javascript jquery

我的jQuery是:

$("#qf").change = calc;
$("#sellers_price").change = calc;

function calc()
{
    var data="";
    $qnty = $("#calQnty");
    $unit = $("#calUnit");
    $price = $("#calPrice");

    var value = this.value;
    if(($("#price_based_on").val()=="Kilos")&&($("#unit").val()=="kg"))
    {
        if(this.value<1)
        {
            $qnty.val((this.value*1000).toFixed(2));
            $unit.val("gm");
            $price.val(($("#sellers_price").val()*value).toFixed(2));
        }
        else if(this.value>=1)
        {
            $qnty.val((this.value*1).toFixed(2));
            $unit.val($("#unit").val());
            $price.val(($("#sellers_price").val()*value).toFixed(2));
        }
    }
    else if(($("#price_based_on").val()=="Kilos")&&($("#unit").val()=="gm"))
    {
        var calQnty = this.value*$(this).parents("tr").find('.qnty').text();
        if(calQnty>=1000)
        {
            $qnty.val((calQnty/1000).toFixed(2));
            $unit.val("kg");
            $price.val(($("#sellers_price").val()*value).toFixed(2));
        }
        else
        {
            $qnty.val(calQnty.toFixed(2));
            $unit.val($("#unit").val());
            $price.val(($("#sellers_price").val()*value).toFixed(2));
        }
    }
    else
    {
        $qnty.val((this.value*1).toFixed(2));
        $unit.val($("#price_based_on").val());
        $price.val((json.price*value).toFixed(2));
    }
}

现在,由于行$("#qf").change = calc;$("#sellers_price").change = calc;,只要qfsellers_price的值发生变化,就应调用函数calc(),对?但是当我尝试它时,它不起作用。我错了什么?

我确保代码在我将其写为$("#qf").change(calc);时有效,但在代码中显示的其他方式编写代码时却没有。为什么会这样?

1 个答案:

答案 0 :(得分:3)

声明

$("#qf").change = calc;

calc()函数的引用分配给$("#qf")创建的jQuery对象的“change”属性。正如您在问题中所述,设置事件处理程序的正确方法是调用 .change()

jQuery对象只是一个对象,jQuery没有设置任何花哨的getter / setter API,可以以编写代码的方式工作。您的代码构成了一个简单的JavaScript属性赋值,就事件处理而言没有任何影响。