我在所有浏览器中使用的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在触发事件时没有收到元素
答案 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);
});
答案 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