我有一些ajax onclick的东西,当从菜单中选择值时,会更新这行:
<li id="li_273" data-pricefield="special" data-pricevalue="0" >
这段代码的意图是获取data-pricevalue的值,然后乘以另一个输入框中输入的数值。下面是我尝试编写的函数:
$('#main_body').delegate('#element_240','keyup', function(e){
var temp = $(this).attr("id").split('_');
var element_id = temp[1];
var price = $('#li_273').data("pricevalue");
var ordered = $(this).val();
var price_value = price * ordered;
price_value = parseFloat(price_value);
if(isNaN(price_value)){
price_value = 0;
}
$("#li_273").data("pricevalue",price_value);
calculate_total_payment();
});
但是我遇到了以下错误: Uncaught TypeError: Cannot call method 'data' of null
似乎我的尝试从getElementById中获取价格值不正确。有什么建议吗?
更新:以上代码已根据您的建议进行了编辑,感谢大家。现在看起来它运行得很好。
.delegate()
已被.on()
方法取代。Delegate()
尚未被标记为过时。请参阅已标记为过时的功能:http://api.jquery.com/category/deprecated/。超出使用期限和过时之间有区别。标记为过时的功能可能会在任何新版本中被删除,而被取代的功能则不会。 - Nopedelegate
、live
(已弃用)、bind
等方法实际上并不重要,因为这些方法已经被重写为使用on()
。例如1.7.1源代码:delegate: function( selector, types, data, fn ) {return this.on( types, selector, data, fn);},
或bind: function( types, data, fn ) {return this.on(types, null, data, fn );},
然而,为了避免任何意外问题,我们应该始终遵循文档中给出的建议。 - Nope