1

次のようなonkeyup関数でtxtColsで指定された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'[インクリメント変数]で生成され ます。これらのドロップダウンを選択すると、基本的にイベントをトリガーして、選択した内容に従ってテキストボックス、ドロップダウン、またはカレンダーを生成します。 。

そのための私のコードはこれです:

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

また試した:

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

しかし、このイベントは機能していません。

4

2 に答える 2

3

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+'"/>');
于 2012-10-26T10:33:52.650 に答える
1

これを試して:

まず、次のようにselectsmthにクラスを追加します。selectid= "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 ..
    }
});
于 2012-10-26T10:49:33.587 に答える