我现在有一个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,因为我有几个这样的选择标记。
答案 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);
});