2013-10-28 21 views
14

私はJavascriptとjQueryを使ってテーブルを作成しています。テーブルの最初の行のtdをクリックすると、その列の残りのtdがドロップされるようにします。私のコードを見せて説明しよう。ここに私のJavascriptです:< td >タグでjQueryの.click関数が機能していませんか?

function createTr (heights) { //heights is just an array of words 
    for (var h=0; h<heights.length; h++) { 
     var theTr = $("<tr>", { id: "rowNumber" + h}); 
     for (var i=0; i<heights.length-3; i++) { 
      theTr.append($("<td>", { "class": "row"+h + " column"+i, 
            html: heights[h][i] 
            })); 
     } 
     $('#newTable').append(theTr); // append <tr id='rowNumber0'> to the table (#newTable), which is written in the html 
    } 
} 

すべてのtdのは、TDの.row0で、あなたの場合を除き、隠されているように、私はそれをしたい

<td class="rowh columni"> 

をこれは基本的にTD年代を作成し、各tdが、この形式に似ています.row0 .columniのtdをクリックすると、.columniのすべてのtdが表示されます。パラメータ「高さ」は、配列jsutあり、例えば、それは

var heights = [['headerOne', 'headerTwo'], ['someTd', 'anotherTd'],]; 

することができ、それはそれらの単語を使用してテーブルを作成し、headerOne及びheaderTwoが最初の行になり、someTdとanotherTdはであろう2行目。今

、私はそう

function animation() { 
    $('td').click(function() { 
     alert('clicked'); 
    }); 
} 

のようにクリック機能を追加し、そう

$(document).ready(function() { 

    createTr(heights); 
    animation(); 
}); 

とき、私には何もしないように私のdocument.ready機能でそれを呼び出すようにしてみてくださいtdをクリックします。どうして?

答えて

30

http://api.jquery.com/on/

DOMが作成された後、あなたが要素を作成しているので。動的に作成された正確な要素を取得するには、「オン」セレクタを使用します。 URLから

$("#newTable").on("click", "td", function() { 
    alert($(this).text()); 
    }); 
+0

hm #newTabletbodyとはどういう意味ですか? $( "#newTable")を試してみましたが、うまくいきませんでした。 – user2719875

+0

申し訳ありませんが、それはタイプミスでした。 – Churchill

+0

hm $( 'body')。on( 'click'も動作しません。)すべてのコードを入れています。アニメーションと呼ばれる関数のように、アニメーションのように(){$( 'body')} on( 'click'、 'td'、function(){alert( 'clicked');});} – user2719875

3

このようにしてみてください。

$('body').on('click','td', function() { 
     alert('clicked'); 
    }); 
+0

hm、動作していないようです) – user2719875

+1

余分な ' td 'それは私が$(document).ready(function。 – user2719875

+0

ああ!それを指摘してくれてありがとう)の前に置いた場合にのみ機能します:) –

1

このコードは正常に動作します。この

function animation() { 
    $(document).on('click','td',function() { 
    alert('clicked'); 
    }); 
} 
+0

' td 'の後ろに余分な括弧があるはずですか?答えを掲示した他のユーザーは同じことをして、機能の直前に表示されていたブラケットを閉じなかった。 – user2719875

+0

申し訳ありませんでしたが、これはtypoです –

+1

しかし、これはうまく動作し、他の答え($( 'body')。on)は$(document).ready(function ..... – user2719875

0

を試してみてください。

$(document).ready(function(){ 
    $("td").click(function(){ 
     if(this.title!=""){ 
      alert(this.title); 
     } 
    }); 
}); 
0

私はこれが好きです.-

$("#table tr").click(function(){ 
    console.log(this); 
}); 
関連する問題