仅在Safari上出现Javascript错误

时间:2015-06-16 08:55:41

标签: javascript jquery 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>

当我在输入框中输入20时,js会插入<b>内的10

Safari给了我这个错误

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

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

2 个答案:

答案 0 :(得分:1)

使用 $(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

答案 1 :(得分:1)

您错过了$的{​​{1}}:

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