0

所以我试图让下面的代码用于更新基于 ajax onclick 的价格:

$('#main_body li[data-pricefield="special"]').delegate('onclick','change', function(e)
{
    var temp = $(this).attr("id").split('_');
    var element_id = temp[1];

    var pricedef = $(this).data('pricedef');
    if(pricedef == null)
    {
        pricedef = 0;
    }

    $("#li_" + element_id).data("pricevalue",pricedef);
    calculate_total_payment();
});

到目前为止,一切似乎都很好——当我在控制台中输入时:

jQuery('#li_273').data('pricevalue');

我确实得到了一个返回的值“1.00”,它实际上是在 onclick 命令上设置的:

'onclick' => 'jQuery(\'#li_273\').data(\'pricevalue\',\'1.00\');',

我的问题是我的第一个代码块有什么问题,它阻止了它以正确的方式计算价格,我该如何纠正它?

4

2 回答 2

1

'onclick', 'change' 应该是委托中的 'click change'

编辑: "$('#main_body li[data-pricefield="special"]').delegate('li','change', function(e) { 当您从字段中跳出时实际上有效 - 它添加了 $1给它。”

所以你应该有:

$('#main_body li[data-pricefield="special"]').on('li','click change', function(e) {

也许检查

if(pricedef == undefined || pricedef == null){
于 2012-12-21T22:20:25.797 回答
1

您正在使用

$('#main_body li[data-pricefield="special"]').delegate('onclick','change', function(e){
   // ...
});

butdelegate的语法是.delegate( selector, eventType, handler(eventObject) ),在这种情况下你应该写

$('#main_body').delegate('li[data-pricefield="special"]','click', function(e){
   // ...
});

没有onclick事件jQuery,AFAIKli没有change事件,所以如果你想使用多个事件,那么你可以使用

$('#main_body').delegate('li[data-pricefield="special"]','click another_event', function(e){
   // ...
});

您也可以使用on而不是delegate.

一个例子阅读更多

于 2012-12-21T22:29:49.030 回答