Javascript 仅在 Safari 上出错

Javascript error only on Safari

我有一个 javascript 在除 Safari 以外的所有浏览器中都运行良好。

代码非常简单,基本上当我更改文本字段的值(数值)时,<b> 的内容也会更改

代码在这里

$(document).on('change', '.priceAmount', function(e) {
 e.preventDefault();
 $((e.target).closest('div.price_info')).find('> .supplierPrice').html(
 ($(this).val() + 10);
});

对应的HTML是

<div class="price_info">        
   <input type="number" class="priceAmount">    
   <b class="supplierPrice">20</b>
</div>

<b>里面的20是我在输入框输入10时js插入的

Safari 给我这个错误

TypeError: undefined is not a function (evaluating '(e.target).closest('div.price_info')')

事件触发时,Safari 似乎没有接收到元素

使用 $(this) 而不是 e.target。建议使用parseInt

$(document).on('change', '.priceAmount', function(e) {
 e.preventDefault();
 $(this).closest('div.price_info').find('.supplierPrice').html(parseInt($(this).val()) + 10);
});

Fiddle

您错过了 e.target$

$($(e.target).closest('div.price_info'))
//^
    .find('> .supplierPrice').html(parseInt($(this).val(), 10) + 10);

或者,您也可以使用 $(this):

$(this).closest('div.price_info')
    .children('.supplierPrice')
    .html(parseInt($(this).val(), 10) + 10);

代码中的语法错误

html 方法后的额外 (

$((e.target).closest('div.price_info')).find('> .supplierPrice').html(
 ($(this).val() + 10);
//^