0

の中にカスタム属性を持つ<input>タグがあります。<table>その属性を取得する関数を作成しようとすると、機能しません。何か案は?

<table>
  <tr>
    <td>
      <input row="ab01" id="ab01_01">
    </td>
  </tr>
</table>

function retrieve_row(){
alert($(this).attr('row'));
}

結果はundefinedです。なんで?

4

1 に答える 1

3

いくつかのこと:

thisスコープが正しくありません。要素を直接ターゲットにするだけです:

function retrieve_row(){
   alert($('#ab01_01').attr('row'));
}

また、あなたのようにカスタム HTML 属性を作成しないでください。ただし、HTML5data-属性を使用して同じ目的を達成できます。

  <input row="ab01" id="ab01_01">  //INVALID

  <input data-row="ab01" id="ab01_01"> //VALID

   function retrieve_row(){
      alert($('#ab01_01').attr('data-row')); //The un-hip way
      alert($('#ab01_01').data('row')); //Like the cool kids are doing
   }

jQuery の pappy から: http://ejohn.org/blog/html-5-data-attributes/

OPのコメントに基づいて、彼はこれを探していると思います:

$("table").on( "click", "input", function() {
     alert($(this).data('row'));
});

この関数が広すぎないように、テーブルにクラスまたは ID を追加することをお勧めします。

于 2013-10-24T12:03:40.057 に答える