-1

使用 jQuery,我试图获取我单击的控件 ID(单选按钮)。我读了这个问题并从那里尝试了几乎所有东西:

alert($(this).get(0).id);
alert($(this).id);
alert($(this).attr('id'));
alert(this.id);

但我总是得到:Undefined

我只是不明白我做错了什么。

更新:

单选按钮是由 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>

我知道单选按钮有 id,我检查了生成的 HTML。

4

3 回答 3

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);
    }
}      
于 2012-11-22T20:24:04.680 回答
2

C#:

((RadioButton)controlToReturn).Attributes.Add("onclick", "Show(this);");

JavaScript:

function Show(radio) {
    if (radio.checked) {
        alert(radio.id);               
    }        
}
于 2012-11-22T20:20:36.133 回答
1

要附加点击侦听器并提醒 ID,您的代码应如下所示:

​$(function () {
    $("input[type='radio']").on("click", function () {
        alert(this.id);            
    });
});​

一个工作演示:http: //jsfiddle.net/SSBnV/1/

于 2012-11-22T20:05:52.667 回答