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);
});
您错过了 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);
//^
我有一个 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);
});
您错过了 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);
//^