0

我已经坚持了几个小时了。我认为是时候重新审视代码了。我对 JavaScript 很陌生,所以我肯定会忽略一些细节。我应该注意到其他功能正常工作。

我正在动态地在表中创建行,并且一些单元格包含 SELECT 元素。这是脚本(只是我遇到问题的部分):

case 2:
    newcell.innerHTML = "<select id='size" + pid + "' class='ad_size' \
                             onChange='updateSubtotal()'> \
                             <option value='0'>Full</option> \
                             <option value='1'>Half</option> \
                             <option value='2'>Quarter</option> \
                             <option value='3'>Eighth</option> \
                             <option value='4'>Directory</option> \
                         </select>";
    break;

以及我只是尝试记录它是否被正确调用的基本功能:

function updateSubtotal() {
    console.log("size changed");
    return true;
}

补充一下我最初尝试使用 jQuery .change 执行此操作可能会有所帮助,但它也无法正常工作:

$(".ad_size").change(function(){
    console.log("size changed");
});

你能看到任何愚蠢的错误吗?

4

2 回答 2

3

由于您正在动态添加元素,请尝试使用delegate附加事件处理程序。

$('tableSelector').delegate('.ad_size', 'change', function(){
    console.log("size changed");
});

或者on,如果您使用的是 jQuery 1.7+,请使用

$('tableSelector').on('change', '.ad_size', function(){
    console.log("size changed");
});
于 2012-05-17T22:51:32.357 回答
0

尝试:

 $(document).ready(function(){
       $(".ad_size").live('change',function(){
           console.log("size changed");
       });
    });
于 2012-05-17T22:50:07.227 回答