javascript
  • jquery
  • html
  • 2012-05-17 80 views 0 likes 
    0

    我一直坚持这个小时了。我认为是时候对代码进行一些新的观察了。我对JavaScript非常陌生,所以我当然可以忽略一些细节。我应该注意到其他功能正常工作。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"); 
    }); 
    

    任何愚蠢的错误,你可以看到什么?

    +0

    变化的console.log提醒,看看会发生什么 - 我甩了你的代码到一个新的页面,它的快乐与警报 –

    回答

    0

    尝试:

    $(document).ready(function(){ 
         $(".ad_size").live('change',function(){ 
          console.log("size changed"); 
         }); 
        }); 
    
    +0

    ' .on'不会有这样的区别。 – SLaks

    +0

    哇谢谢。 .on没有工作,但.live像一个魅力一样工作。 –

    +0

    @Kevin_TA任何时间 – mgraph

    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"); 
    }); 
    
    +0

    .delegate(1.4+)或.on(1.7+)将是使用当前版本的jQuery完成此操作的适当方式。 – LocalPCGuy

    相关问题