の中にカスタム属性を持つ<input>
タグがあります。<table>
その属性を取得する関数を作成しようとすると、機能しません。何か案は?
<table>
<tr>
<td>
<input row="ab01" id="ab01_01">
</td>
</tr>
</table>
function retrieve_row(){
alert($(this).attr('row'));
}
結果はundefined
です。なんで?
の中にカスタム属性を持つ<input>
タグがあります。<table>
その属性を取得する関数を作成しようとすると、機能しません。何か案は?
<table>
<tr>
<td>
<input row="ab01" id="ab01_01">
</td>
</tr>
</table>
function retrieve_row(){
alert($(this).attr('row'));
}
結果はundefined
です。なんで?
いくつかのこと:
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 を追加することをお勧めします。