2012-04-29 27 views
0
我已經遇到了一些麻煩檢索被點擊,我可以得到事件觸發的唯一途徑表格單元格中的文本

被代以「TBODY TD」與檢索表格單元格的文本,一旦點擊了jQuery的

$("body").click(function(e) { 

但這不會爲單元格單元返回正確的數據值。任何人都知道我可能會做錯什麼?我需要使用jQuery創建表格,以便可以根據表單中的輸入動態調整大小。

$(document).ready(function() { 
    $('#selection').submit(function() { 
     $(function() { 

      var $tbl = $('<table border="1">').attr('id', 'table'); 
      var $tbody = $('<tbody>').attr('id', 'tableBody'); 

      for (var i = 0; i < $("#numOfPieces").val(); i++) { 
       var trow = $("<tr>"); // New row 

       for (var j = 0; j < $("#numOfPieces").val(); j++) { 
        $("<td>") 
          .text('Row : ' + i + ', Col: ' + j) 
          .appendTo(trow); // New data cell 
       } 
       trow.appendTo($tbody); 
      } 

      $tbl.append($tbody); 
      $('table').remove(); // Remove previously created table 
      $('body').append($tbl); 
     }); 
     return false; 
    }); 

    $("tbody td").click(function(e) { 
     var currentCellText = $(this).text(); 
     var LeftCellText = $(this).prev().text(); 
     alert(currentCellText); 
    }); 
}); 
+0

它做錯了什麼?例如,如果您將值設爲每個單元格的數量,如果您單擊第3行,第4列(也許該值將爲34)是值53(第5行,第3列)? – 2012-04-29 00:35:10

+0

事件處理程序永遠不會被調用,正如steveax所指出的那樣,在監聽器所連接的元素下面的註釋中需要在頁面上存在,因此使用'$('body')。on('click',' tbody td'.. – bobbyrne01 2012-04-29 00:43:18

+0

@ bobbyme01 - 我很好奇,如果那是發生了什麼,這就是爲什麼我沒有給出答案,我預計他的觀察是正確的。 – 2012-04-29 01:16:28

回答

3

問題是您的點擊處理程序綁定到EXISTING表。你需要將它綁定到「任何」表。在文件準備功能:

$('.container').on('click', 'td', function(e) { 
    var currentCellText = $(this).text(); 
    // etc 
}); 

哪裏.container是不是希望被摧毀任何容器包裝元素。使這個最接近的祖先,你可以。如果沒有候選人可以使用,那麼你可以使用body,但是如果可以的話,我會避免這麼高。

如果需要,td選擇器當然可以修改爲更具體。如果您有這種行爲應該存在的表類型,請忘記ID併爲該類表提供一個類。那麼td就變成了.someClass td

在嘗試使用它之前,您可能還需要對LefCellText甚至存在進行清理。以你擁有的方式聲明變量是沒有問題的(如果沒有這樣的選擇器,它就變得沒有定義),但你不想假定你將擁有內容,你會想要創建一個後備計劃。

+0

+1 [委託](()]( http://api.jquery.com/on/),但我相信當處理程序綁定時選擇器必須存在(_「事件處理程序僅綁定到當前選定的元素;它們必須在代碼存在於頁面上打電話給.on()「_),所以你想要:'$('body')。on('click','tbody td',function(e){...' – steveax 2012-04-29 00:35:10

+0

你是燦爛的!我不得不使用''('body')。on('click','tbody td'..'作爲steveax建議正確處理事件。謝謝你們的幫助! – bobbyrne01 2012-04-29 00:39:47

+0

I (''click','table#table tbody td',function(e){...'將範圍縮小到特定的表格,儘管您可能需要考慮一個更好的'id'值。 – dez 2012-04-29 00:41:42

相關問題