jQuery使用每个元素信息设置单击处理程序

时间:2011-07-17 11:26:44

标签: javascript jquery html

我现在有一个onclick属性ontag,当用户点击它时,使用REQUIRED_ID设置服务器端。
现在的问题是我正在尝试更类似于jQuery的方法,我在文档准备就绪时设置了点击处理程序,但现在我没有设置它的REQUIRED_ID
我想知道jQuery这样做的方法是什么,也许用REQUIRED_ID设置另一个标签并准备好阅读它?

现在:

$.ready(
    $('select.attr_satus>option:not(:selected)').each( 
        /* I AM MISSING REQUIRED_ID, WHERE DO I GET THIS VVVVVV*/
        $(this).click(function(){ statusChanged(this,REQUIRED_ID,$(this).val()); }) 
    );
);

之前:

<select class="attr_status">
<option onClick='statusChanged(this,REQUIRED_ID,"draft");' value='draft'>Draft</option>
<option value='publish' selected="true">Published</option>
</select>

REQUIRED_ID是一个每行都会更改的ID,因为我有几个这样的选择标记。

1 个答案:

答案 0 :(得分:1)

您可以将您的额外信息存储在“data-”属性中:

<select class="attr_status">
  <option  data-requiredId='REQUIRED_ID' value='draft'>Draft</option>

然后在您的事件处理程序中,您可以使用“.data()”:

来获取它
$(this).click(function() {
  statusChanged(this, $(this).data('requiredId'), this.value);
});

编辑 - 现在使用HTML5标准化“数据 - ”属性。另一种方法是使用“class”字符串,它可以包含几乎任何东西。我所做的是使用“名称:值”符号:

<select class="attr_status">
  <option  class='requiredId:REQUIRED_ID' value='draft'>Draft</option>

然后在处理程序中:

$(this).click(function() {
  var id = this.className.replace(/^.*\brequiredId:(\S+).*/, '$1');
  statusChanged(this, id, this.value);
});