使用jQuery我试图获取控件的id,我点击了(radiobutton)。我读了this question并尝试了几乎所有内容:
alert($(this).get(0).id);
alert($(this).id);
alert($(this).attr('id'));
alert(this.id);
但我总是得到:Undefined
我只是不明白我做错了什么。
更新:
Radiobuttons是在C#后面的代码中动态生成的:
controlToReturn = new RadioButton
{
ID = controlId
};
((RadioButton)controlToReturn).Text = text;
((RadioButton)controlToReturn).Checked = Convert.ToBoolean(Convert.ToInt32(value));
((RadioButton)controlToReturn).GroupName = groupName;
((RadioButton)controlToReturn).CssClass = cssClass;
((RadioButton)controlToReturn).Attributes.Add("runat", "server");
((RadioButton)controlToReturn).Attributes.Add("onclick", "Show();");
和ASPX中的功能:
<script type="text/javascript" language="javascript">
function Show() {
if ($(this).cheked = true) {
console.log(this);
alert($(this).get(0).id);
alert($(this).id);
alert($(this).attr('id'));
alert(this.id);
}
}
</script>
我知道radiobutton有id,我检查了生成的HTML。
答案 0 :(得分:3)
您的问题是this
在您的函数中没有上下文,实际上是window
本身。
您需要修改输出html以提供上下文作为参数:
((RadioButton)controlToReturn).Attributes.Add("onclick", "Show(this);");
并更改函数Show
:
function Show(el) {
/* for jQuery use $(el) */
if(el.checked) {
alert(el.id);
}
}
答案 1 :(得分:2)
C#:
((RadioButton)controlToReturn).Attributes.Add("onclick", "Show(this);");
JavaScript的:
function Show(radio) {
if (radio.checked) {
alert(radio.id);
}
}
答案 2 :(得分:1)
要附加点击监听器并提醒ID,您的代码应如下所示:
$(function () {
$("input[type='radio']").on("click", function () {
alert(this.id);
});
});