Мой 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);
, но не тогда, когда он написан другим способом, как показано в коде. Почему это происходит?
* "следует называть, правильно? *" - конечно нет. Установка свойства 'change' экземпляра jQuery не имеет ничего общего с событием' onchange'. – dfsq
Свойство '.change' не является ссылкой на функцию обработчика событий, как в бывшем DOM с' my_elem.onchange = calc'. Вместо этого это метод, с помощью которого вы передаете функцию, которая будет действовать как обработчик события. Соответствующим кодом в исходном DOM будет 'my_elem.addEventListener (" change ", calc)' –