gpt4 book ai didi

javascript - 为什么我不能将两个 jQuery 函数一个放在另一个里面?

转载 作者:行者123 更新时间:2023-11-28 13:20:45 24 4
gpt4 key购买 nike

当您在 dad 中选择一个选项时,我尝试创建两个选择框,一个 dad 选择框和一个 son 选择框> 例如,如果值等于 1,则 son 选择框中唯一可用的选项将是那些值等于 1 的选项。但是,我在 dad 上使用函数 .change,并在 son 上使用 .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 选择可用作 thisd.target

$("#son > option").each(function(s) {
$(s).val();
});

这里的s(each回调的第一个参数)是列表中当前项目的索引。您可以将其更改为 .each(function(i, s) {...,或在回调中使用 this 来引用选项元素。

在这两种情况下,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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com