我尝试创建两个选择框,一个dad选择框和一个son选择框,例如,当您在dad中选择一个值等于1的选项时,选择框将是那些等于son的框。但是,我在1上使用函数.change,并且通过dad使用.each,对于jQuery来说我还比较陌生,所以我不知道我在做什么是否被认为是非法的。任何帮助表示赞赏。$('#dad').change(function(d){ $("#son > option").each(function(s) { if($(d).val() == $(s).val()){ $(s).show(0); }else{ $(s).hide(0); } });});我的完整代码:var dadArray = [[1,'Option1'],[2,'Option2']];var sonArray = [[1,1,'Son1'],[2,2,'Son2'],[3,2,'Son2']];function getDad(dad,id){ var size = dad.length; for(var i=0;i<size;i++){ $(id).append('<option value="'+dad[i][0]+'">'+dad[i][1]+'</option>'); }}function getSon(son,id){ var size = son.length; for(var i=0;i<size;i++){ $(id).append('<option id="son'+son[i][0]+'" value="'+son[i][1]+'">'+son[i][2]+'</option>'); }}$('#dad').change(function(d){ $("#son > option").each(function(s) { if($(d).val() == $(s).val()){ $(s).show(0); }else{ $(s).hide(0); } });});getDad(dadArray,'#dad');getSon(sonArray,'#son');<!DOCTYPE html><html><head><script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script><title>iterateSelectBox</title></head><body> <select id="dad"> </select> <select id="son"> </select></body></html> 最佳答案 有两个核心问题,都与传递给回调函数的参数有关,这与您的想法无关: $('#dad').change(function(d){ $(d).val(); });d是jQuery标准化的更改事件对象。 #dad选择可用作this和d.target。$("#son > option").each(function(s) { $(s).val();});此处s(each回调的第一个参数)是列表中当前项目的索引。您可以将其更改为.each(function(i, s) {...,或在回调中使用this引用option元素。在这两种情况下,jQuery都不是很有用,并且不会产生诸如“嘿,您无法查询事件对象”或“整数不是有效的选择器”之类的错误,因为您几乎可以将任何内容传递给$()函数它会尽力做到这一点。此处的固定代码:http://jsfiddle.net/5n3ofr8n/$('#dad').change(function(){ var selected = this.value; $("#son > option").each(function() { if( selected == this.value){ $(this).show(); }else{ $(this).hide(); } });});或者,您可以简化函数以使用jQuery的功能:http://jsfiddle.net/5n3ofr8n/1/$('#dad').change(function(){ $('#son option').hide().filter('[value=' + this.value +']').show();});关于javascript - 为什么我不能在另一个内部包含两个jQuery函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33301168/ 10-12 00:07