【问题标题】:How to handle onchange event on drop-downs that are dynamically generated by jquery如何处理由jquery动态生成的下拉菜单上的onchange事件
【发布时间】:2012-10-16 14:52:37
【问题描述】:

我正在尝试根据 txtCols 在其 onkeyup 函数上指定的 int 值创建下拉列表,如下所示:

$("#txtCols").keyup(function(){ 
    var $count = $(this).val();

    $("#holder").html('');

    // define matrix header options available
    var matrixHeaders = {
        'TB': 'Text Box',
        'DD': 'Drop Down',
        'CL': 'Calendar'
    }

    for ($i=0;$i<$count;$i++) 
    { 

        var s = $('<select id="header'+$i+'"/>');
        for(var val in matrixHeaders) {
            $('<option />', {value: val, text: matrixHeaders[val]}).appendTo(s);
        }
        s.appendTo('#holder');
    } 

}); 

使用 id='header+i' [increment variable] 生成下拉菜单 现在,在选择这些下拉菜单时,我想基本上触发一个事件,以根据所做的选择生成文本框、下拉菜单或日历。

我的代码是这样的:

$(function(j) {
   $('#header' + j).change(function() {
      alert('Got Value');
   });
}(j));

也试过了:

$(document).on('change', '#header' + j, function() {        
  alert('hii');
}(j));

但是这个事件不起作用。

【问题讨论】:

    标签: jquery dynamic drop-down-menu


    【解决方案1】:

    使用 on 函数让处理程序调用动态添加的元素:

    $(document).on('change', '#header' + j, function() {
    

    或者,对于任何j

    $(document).on('change', '[id^="header"]', function() {
    

    但我宁愿使用类而不是匹配 id 开头的选择器:

    $(document).on('change', '.header', function() {
    ...
    var s = $('<select class=header id="header'+$i+'"/>');
    

    【讨论】:

    • 请看...我的代码..我已经编辑过..你在说什么吗??它在下面.. 也尝试过 header
    • 我建议请..给我完整的脚本..因为它不工作..以这种方式。
    【解决方案2】:

    试试这个:

    首先将类添加到您的选择中,例如:select id="header'+$i+'" class="header"/

    下一个添加处理程序:

    $(".header").live("change", function () {
        var id = $(this).attr("id").split("header").join(""); //get i
        var opt = $("#header" + id + " option:selected").val(); //or whatever you need
        switch (opt) {
          case ..
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      相关资源
      最近更新 更多