0

我有一些 jQuery 函数,当在字段中选择新值时会更新一些数字<SELECT>。这些<SELECT>项目由用户动态添加,因此这些函数使用 .live() 函数。在 Mozilla、Chrome 和 IE8 中一切都按计划进行,但是当我尝试在我的 iPad 上访问该页面时,数字不再相应地更新。我必须再次单击<SELECT>字段才能更新数字这是我的功能之一:

    // Update subtotal when .months is changed
    $(".months").live('click',function(){

        var pid = this.id.replace("months", "");
        var price = document.getElementById('row' + pid).className;
        updateSubtotal(pid, price);

    });

所有功能都包含在document.ready()块中。我已经尝试过“单击更改”并且也尝试过“更改”,但是它们在其他一些浏览器中存在问题。

感谢您的任何帮助!

4

2 回答 2

3

iPad 和选择元素玩得不是很好。如果您需要选择的值来做任何事情,您将需要绑定到模糊。

尝试这样的事情(.months应该是你的选择元素):

// Update subtotal when .months is changed
$(".months").on('blur', function(){

    var pid = this.id.replace("months", "");
    var price = document.getElementById('row' + pid).className;
    updateSubtotal(pid, price);

   });

编辑
试试这个:

// Update subtotal when .months is changed
$(document).on('blur|click', ".months", function(){
    var pid = this.id.replace("months", "");
    var price = document.getElementById('row' + pid).className;
    updateSubtotal(pid, price);
    });

on()的好处是你可以将它附加到一个元素并从那里委托。由于您的$(document)将始终存在,它还可以捕获您动态添加到页面的元素,而这些元素从一开始就不存在。由于您的原始代码实时使用,我希望元素能够动态加载或生成。在这种情况下,为了使用on()将事件绑定到它,您必须绑定到文档委托给即将到来的任何.months

于 2012-05-28T23:27:24.353 回答
0

如果您将一个空的 onclick="" 添加到 div (或 span 或其他任何内容),它会起作用....我不知道为什么:)

于 2013-03-21T15:13:45.080 回答