0

Jqueryを使用してテーブル要素に動的にデータを入力しています。私のテーブルには、ラベル、テキストエリア、ボタンの3つの列があります。ボタンをクリックするとクリックイベントがバインドされます。以下は私のJqueryコードです。

var rowElem = $('<tr id="'+ key + '" class="queryRow"> </tr>');
rowElem.append($('<td class="queryTitleCol">' + key + '</td>')); 
var colElem = $('<td class="queryValueCol"></td>');
var textAreaElem = $('<textarea rows="10" cols="75"/>');
colElem.append(textAreaElem);
rowElem.append(colElem);
textAreaElem.val(value);
var btnCol = $(
            '<td valign="top">'
            + '<button style="width:42px; vertical-align:middle; margin:2px;" title="delete">'
            +   '<span class="ui-icon ui-icon-trash" style="float:left;"/>'
            + '</button>'
            +'</td>');
    rowElem.append(btnCol);
    $("button", btnCol).click(action);
}

ボタンイベントでは、Jqury.closestを使用してTRタグとラベル要素を取得しています。以下は、ボタンクリックのコードです。

function action() { 
var rowElem = $(this).closest("tr");
var labelTD = $(".queryTitleCol", rowElem);
}

しかし、labelTD、私は常に[td.queryTitleCol]を配列として取得しています。lable要素を取得するためにtd要素を取得できません。find()を試してみましたが、それでもtd配列として取得しています。

rowElem.find('td.queryTitleCol');

ボタンのクリック機能でラベル名をトラバースして取得するにはどうすればよいですか。どんな助けでも本当にありがたいです。

4

3 に答える 3

1

試す

var label = $(".queryTitleCol", rowElem)[0].innerHTML;

また

var label = $(".queryTitleCol", rowElem).text();
于 2012-09-12T17:07:50.543 に答える
0

あなたは次のようなことを試すことができます

$('button').click(function(){
  $(this).prev('.queryTitleCol').text();
});

これは常に前の要素をqueryTitleColそのクラスとして取得します。1つの要素のみが返されるため、これまで説明してきた問題に遭遇することはありません。

于 2012-09-12T17:08:08.363 に答える
0

あなたはこれを試すことができます

function action() { 
     var titleCol = $(this).parent().parent().find('td:eq(0)').text();
}

このフィドルを確認してください

于 2012-09-12T17:22:38.057 に答える