从输入中检索自定义属性不起作用

时间:2013-10-24 11:59:47

标签: jquery attributes

我在<input>内有一个带有自定义属性的<table>标记。 当我尝试创建一个函数来检索该属性时,它不起作用。 有什么想法吗?

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

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

结果是undefined。为什么呢?

1 个答案:

答案 0 :(得分:3)

一些事情:

您的this没有确定范围,只是直接定位您的元素:

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

另外,不要像你那样制作自定义HTML属性。但是,不用担心,您可以使用HTML5 data-属性来实现相同目的:

  <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,以便此功能不会过于宽泛。