我有一个单选按钮列表,名称为“ ReportTypeId”。对于每个radio按钮,我想在单击时显示一个警报及其值。

我写了下面的jQuery,它用名称为“ ReportTypeId”的列表获得了所有5个单选按钮:

$("[name='ReportTypeId']").toArray().forEach(function(reportTypeId){
    reportTypeId.click(function(reportTypeId){
       alert(reportTypeId.value);
    });
});


当我设置一个断点并在加载时检查变量时,变量看起来像预期的那样。但是,当我在页面加载后单击单选按钮时,没有任何反应。我在上面的jQuery中做错了什么?

最佳答案

您应该使用this将当前元素添加到.click()的回调函数中。传递给函数的参数实际上是click事件对象。

$("[name='ReportTypeId']").toArray().forEach(function(reportTypeId){
    reportTypeId.click(function(event){
        alert(this.value);
    });
});




您只需在jQuery集合上调用.click()即可大大简化代码。事件侦听器将自动附加到集合中的所有元素。

$("[name='ReportTypeId']").click(function(event){
    alert(this.value);
});

09-18 20:54