2014-02-11 83 views
0

我試圖在用戶點擊tbody中的任何td元素時引發一個點擊事件。這是迄今爲止我所知道的,但它沒有提升事件,任何想法爲什麼?在tbody中的每個td上提高jQuery點擊事件

<head runat="server"> 
    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     $("#skuOptionsBody td").click(function() { 
      alert('clicked!'); 
     }); 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <table id="options" border="1"> 
     <thead> 
      <tr> 
       <td> 
        SWEET OPTION 
       </td> 
       <td> 
        DRINK OPTION 
       </td> 
      </tr> 
     </thead> 
     <tbody id="skuOptionsBody"> 
      <tr> 
       <td style="text-align: center"> 
        SO1 
       </td> 
       <td style="text-align: center"> 
        DO1 
       </td> 
      </tr> 
     </tbody> 
    </table> 
    </form> 
</body> 

UPDATE:

對不起,我忘了提,我動態地添加行使用jQuery表和我加入新行我需要他們綁定到這個點擊event.How這可以做到嗎?

+1

你在jQuery中試過現場活動嗎?動態添加的HTML事件本身不起作用。在jquery中使用Live或On事件.. –

回答

4

試試這個裏面的$(document)。就緒(函數(){});

$("#skuOptionsBody td").bind('click', function() { 
    alert('clicked!'); 
}); 

或者對於jquery> 1.7你可以使用。在()

$("#skuOptionsBody").on('click', 'td', function() { 
    alert('clicked!'); 
}); 
1

您的代碼必須在dom ready handler,因爲你正在嘗試添加的事件處理程序的目標元素在DOM

jQuery(function(){ 
     $("#skuOptionsBody td").click(function() { 
      alert('clicked!'); 
     }); 
}) 
1

用於添加到DOM元素之前,結合執行腳本加載之前,還使用如果可能,可以使用latest jQuery

  • 你可以把腳本的document.ready

    $(document).ready(function(){ 
         $("#skuOptionsBody td").click(function() { 
          alert('clicked!'); 
         }); 
    }); 
    
  • 使用使用上

    $(document).on("click","#skuOptionsBody td", function() { 
         alert('clicked!'); 
        }); 
    
  • 將加入到DOM HTML元素後的劇本,可能只是之前被委派事件結束身體標記。

    <body> 
        <form id="form1" runat="server"> 
         <table id="options" border="1"> 
          <thead> 
           <tr> 
            <td> 
             SWEET OPTION 
            </td> 
            <td> 
             DRINK OPTION 
            </td> 
           </tr> 
          </thead> 
          <tbody id="skuOptionsBody"> 
           <tr> 
            <td style="text-align: center"> 
             SO1 
            </td> 
            <td style="text-align: center"> 
             DO1 
            </td> 
           </tr> 
          </tbody> 
         </table> 
        </form> 
        <script type="text/javascript"> 
         $("#skuOptionsBody td").click(function() { 
         alert('clicked!'); 
         }); 
        </script> 
    </body> 
    
+0

OP正在使用'jquery-1.4.1',因爲您已經知道它是在版本中添加的:1.7 – Satpal

1

經您在document-ready handler代碼,因爲當代碼運行時,它會找不到「skuOptionsBody TD」在頁面元素:瀏覽器將不會有分析認爲呢。

代碼

$(document).ready(function() { 
    $("#skuOptionsBody td").click(function() { 
     alert('clicked!'); 
    }); 
}); 

OR

移動你的<script>標籤的<body>結束。

OR

使用事件代表團

代碼

$(document).delegate('click', "#skuOptionsBody td", function() { 
    alert('clicked!'); 
}); 
1

沒有什麼錯在你的代碼。只是你沒有在正確的地方添加它。準備寫上文件的代碼:

$(document).ready(function(){ 
$("#skuOptionsBody td").click(function() { 
     alert('clicked!'); 
    }); 
}); 
1

我想你的代碼中的jsfiddle,一切似乎是工作的罰款,只要把它的一些頂級賽事,如$(文件)。就緒()函數。下面有一個鏈接http://jsfiddle.net/lithium182/A5vMj/

的jQuery:

$("#skuOptionsBody td").click(function() { 
     alert('clicked!'); 
    }); 

要觸發點擊一個THEAD細胞?