【问题标题】:Jquery Cannot find dynamically created radiobuttonsJquery 找不到动态创建的单选按钮
【发布时间】:2013-03-05 22:28:42
【问题描述】:

我正在尝试有一个单选按钮列表,当用户单击其中一个时,我想要 Alert("Warning message") 。

我创建了一个静态单选按钮,如果单击它,我可以看到 Alert() 框。但是如果我点击动态创建的单选按钮,Alert() 不会出现。

这里是静态单选按钮,这会触发 Alert()

<input type="radio" class="radio_profile" name="radio_profile" id="radio_profile_not_found" value="0">

这是在 webmethod 中创建的,这不会触发 Alert()

 rtn_str = "<input type='radio' class='radio_profile' name='radio_profile' id='radio_profile_" + dr["ProfessionalID"].ToString() + "' value='" + dr["ProfessionalID"].ToString() + "' >"

这里是 Jquery 代码

$("input[name='radio_profile']").change(function () {
     alert('Warning Message');
});

请您帮我修复动态创建的单选按钮以触发 Alert() 框

【问题讨论】:

  • 查看事件委托。这样,您只绑定到您这样做时存在的元素。

标签: jquery asp.net radio-button


【解决方案1】:

您需要将event delegation.on() 函数一起使用:

$(document).on('change', 'input[name="radio_profile"]', function(e) {
    alert('Warning Message');
});

理想情况下,在选择包含所有动态添加的单选按钮的静态(在页面加载时存在)元素后,您应该调用 .on(),而不是 document。静态元素离它们越近越好。如果没有看到页面的 HTML,很难知道应该是什么元素。

【讨论】:

    【解决方案2】:

    函数运行时,change() 事件将绑定到与选择器匹配的所有元素。它不知道新元素。您必须运行该函数以再次重新绑定事件处理程序 - 或使用 on('change', function(){

    JQuery 文档解释更多:http://api.jquery.com/on/

    【讨论】:

      【解决方案3】:
      $(document).on("change",'input[name="radio_profile"]',function(){
       alert('Warning Message');
      });
      

      【讨论】:

        【解决方案4】:

        在 asp.net 中,您可以将属性 ClientIDMode="Static" 粘贴到单选按钮控件。这样您就可以使用页面中指定的控件 ID。您也可以根据控件ID进行事件处理。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-09-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-06-30
          • 2014-02-28
          • 2011-07-28
          相关资源
          最近更新 更多