获取点击控件的ID

时间:2012-11-22 20:00:31

标签: c# jquery asp.net

使用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。

3 个答案:

答案 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);            
    });
});​

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

相关问题