2

テーブルの行をクリックすると、その行のデータ属性が「未定義」であると警告されるのはなぜですか?

$(document).on('click', 'tr', function() {

    alert($(this).data("recordId"))

});

fee_source_idこれは、の変数をデータ属性としてテーブル行に(正常に)渡すPHPです。

<table = "all_aifs">
<tr>
    <th><b>Invoice ID</b></th>
    <th><b>Company Name</b></th>
    <th><b>Invoice Date</b></th>
    <th><b>Link</b></th>
</tr>
<?php foreach($result as $index => $row) : ?>
<tr data-recordId="<?=$row[id];?>"
    class="<?=$row["match"] ? "match" : "";?>">
    <td><?php echo $row[id]; ?></td>
    <td><?php echo $row[company_name]; ?></td>
    <td><?php echo $row[invoice_date]; ?></td>
    <td></td>
</tr>

更新 以下のコメントのおかげで、上記のJavaScriptコードに次のようなエラーがいくつかあることがわかりました。

  1. alertメソッドは、data要素ではなく要素を呼び出していましたattr
  2. メソッドのパラメータattrがに変更されました("data-recordId")。(注:jQueryはこのパラメーターの最初の部分を無視することを認識しているため、data-パラメーターとして含まれていませんでした。)
  3. アラートメソッドの最後にセミコロンがありませんでした

更新されたjQuery(これは現在機能しています)

$(document).on('click', 'tr', function() {

    alert($(this).attr("data-recordID"));

});

質問

  • $.on()をサポートし、またをサポートする必要があるjQuery 1.7.2を.data()使用していますが、このメソッドを使用する元のポジショニングは.data()引き続き機能しますか?なぜ機能しないのですか?
  • data-attributeを"x"に設定する代わりに、テーブルの各行の最初の列と正確に等しいため、(fee_source_id)データの代わりにテーブルの各行の最初の列/セルを使用できます。 -渡された属性、そのレコードを参照するには?
4

1 に答える 1

0

$.on()をサポートし、またをサポートする必要があるjQuery 1.7.2を.data()使用していますが、このメソッドを使用する元のポジショニングは.data()引き続き機能しますか?なぜ機能しないのですか?

を使用してデータ属性にアクセスする場合.data実際にはjQueryのdataオブジェクトから読み取っています。これにより、cameCasedキーがハイフンでつながれたキー(recordId -> record-id)にマップされます。つまり、属性の名前をに変更すると、とを使用して属性を取得data-record-idできます。デモンストレーションを参照してください.data('record-id').data('recordId')

data-attributeを"x"に設定する代わりに、テーブルの各行の最初の列と正確に等しいため、(fee_source_id)データの代わりにテーブルの各行の最初の列/セルを使用できます。 -渡された属性、そのレコードを参照するには?

はい、あなたはそれを行うことができます(同じデモに含まれている例):

$(document).on('click', 'tr', function() {
    var record_id = $(this).find('td:first-child').text();
    alert(record_id);
});
于 2013-01-08T01:28:55.733 に答える