我的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;
,只要qf
或sellers_price
的值发生变化,就应调用函数calc()
,对?但是当我尝试它时,它不起作用。我错了什么?
我确保代码在我将其写为$("#qf").change(calc);
时有效,但在代码中显示的其他方式编写代码时却没有。为什么会这样?
答案 0 :(得分:3)
声明
$("#qf").change = calc;
将calc()
函数的引用分配给$("#qf")
创建的jQuery对象的“change”属性。正如您在问题中所述,设置事件处理程序的正确方法是调用 .change()
。
jQuery对象只是一个对象,jQuery没有设置任何花哨的getter / setter API,可以以编写代码的方式工作。您的代码构成了一个简单的JavaScript属性赋值,就事件处理而言没有任何影响。