2014-02-10 24 views
0

我有一个jQuery,我为每行添加一个表内的选择标记,我想保留onChange事件每个下拉列表中的每一行。如图所示,我尝试使用onchange事件,但无法正常工作。我的jQuery代码是如下:onchange事件为选择标记使用jquery

for (var j = 0; j < leng; j++) { 
    o = proplist[j]; 
    txt = "<tr><td>" + o.Value + "</td><td><select name=" + o.Key + "onchange='OnChange();'>"; 
    for (var k = 0; k < data.length; k++) { 
     if (data[k] == o.Value || data[k] == o.Key) { 
      txt1 += " <option selected>" + data[k] + "</option>"; 
     } else txt1 += " <option>" + data[k] + "</option>"; 
    } 
    txt = txt + txt1 + "<option value='0'>Ignore</option></select></td></tr>"; 
    $("#propertycolumnListTable tbody").append(txt); 
    txt = ""; 
    txt1 = ""; 
} 
+0

如果你有一个'的OnChange()'函数声明它应该与此代码调用,我会检查是否有Firebug控制台显示的错误。 – Naryl

+0

您的'OnChange'函数需要在全局范围内可用,因此请将其声明在任何其他函数之外(如jQuery DOM就绪事件处理程序)。 –

+0

并检查你的控制台,可能有错误。 – dfsq

回答

0

你可以试试这个:

$('select').change(function() { 
    OnChange(); 
}); 
+0

这对于动态添加的选择不起作用 – mplungjan

+0

您可以使用$(parent).on('change',function(){OnChange()}); – ducdhm

0

试试这个

$(function() { 
    $("#propertycolumnListTable tbody").on("change","select",function() { 
    // whatever you want when any select in the tbody changes 
    }); 
}); 

,如果您有jQuery的,为什么不利用呢?

for (var j = 0; j < leng; j++) { 
    o = proplist[j]; 
    var $tr = $("<tr/>"); 
    var $td = $("<td/>"); 
    var $sel = $("<select/>",{name:o.Key}); 
    $sel.append('<option value='0'>Ignore</option>'); 
    var selected = null; 
    data.each(function() { 
    $sel.append("<option/>",{value:this,text:this}); 
    if (this == o.Value || this == o.Key) selected=this; 
    }); 
    if (selected) $sel.val(selected); 
    $td.append($sel); 
    $tr.append($td); 
    $("#propertycolumnListTable tbody").append($tr); 
}