javascript
  • jquery
  • html
  • 2012-05-17 98 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

    相關問題