Javascript 设置具有相同css类的两个元素的值

Javascript 设置具有相同css类的两个元素的值,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我对选择下拉列表和输入文本框使用相同的css。我在jquery中设置如下值: $('.a').val('2'); 当检查select和input元素的值时,它们被正确分配,但当我通过console.log显示它们的值时,这两个元素都未定义。为什么呢 console.log($('.a').find('select').val()); console.log($('.a').find('input').val()); 结果: undefined undefined 这是我的小提琴:您的选择器

我对选择下拉列表和输入文本框使用相同的css。我在jquery中设置如下值:

$('.a').val('2');
当检查select和input元素的值时,它们被正确分配,但当我通过console.log显示它们的值时,这两个元素都未定义。为什么呢

console.log($('.a').find('select').val());
console.log($('.a').find('input').val());
结果:

undefined
undefined

这是我的小提琴:

您的选择器不正确(不需要
查找
)。试着跟随

$('.a').val('2');
log($('select.a').val());
log($('input.a').val())

一
二

您的选择器不正确(无需查找)。试着跟随

$('.a').val('2');
log($('select.a').val());
log($('input.a').val())

一
二
不要使用
.find()
来获取值,因为它将搜索所选元素中的子元素
input
/
select
元素

不要使用相同的
选择器
获取两个元素,使用
$('input.a')
获取
输入
,使用
$('select.a')
获取下拉元素:

console.log($('select.a').val());
console.log($('input.a').val());
注意:

如果要在更改
选择
中的选项时更改
输入
值,请使用
change()
事件跟踪此更改

演示:

$('select.a').change(函数(){
$('input.a').val($(this.val());
});
log($('select.a').val());
log($('input.a').val())

一
二
不要使用
.find()
来获取值,因为它将搜索所选元素中的子元素
input
/
select
元素

不要使用相同的
选择器
获取两个元素,使用
$('input.a')
获取
输入
,使用
$('select.a')
获取下拉元素:

console.log($('select.a').val());
console.log($('input.a').val());
注意:

如果要在更改
选择
中的选项时更改
输入
值,请使用
change()
事件跟踪此更改

演示:

$('select.a').change(函数(){
$('input.a').val($(this.val());
});
log($('select.a').val());
log($('input.a').val())

一
二
尝试改用<代码>查找
将尝试查找所选元素的子元素,而筛选器将筛选所选元素:

$('.a').val('2');
console.log($('.a').filter('select').val());
console.log($('.a').filter('input').val())

一
二
尝试改用<代码>查找
将尝试查找所选元素的子元素,而筛选器将筛选所选元素:

$('.a').val('2');
console.log($('.a').filter('select').val());
console.log($('.a').filter('input').val())

一
二

以及为什么要添加
find
?这有很大的不同。您需要
选择.a
输入.a
谢谢,但我不能使用find吗?为什么它不起作用?你不能使用
find()
,因为这不是正确的方法,但是你可以使用
.filter()
,但这将是一个过度的操作,最简单的方法是使用
select.a
input.a
,正如@TemaniAfif.所建议的那样,以及为什么要添加
find
?这有很大的不同。您需要
选择.a
输入.a
谢谢,但我不能使用find吗?为什么它不起作用?你不能使用
find()
,因为这不是正确的方法,但是你可以使用
.filter()
,但在这里它会是一个过度的操作,最简单的方法是使用
select.a
input.a
,正如@TemaniAfif所建议的那样。
find
将在选择器元素的html中搜索,也就是说,在我们的例子中,它将尝试返回
input
select
元素,这些元素具有类
a
的父元素。但是,由于没有返回任何元素,
.val()
将返回
未定义的
。因此,要将
元素
选择器一起使用,您需要遵循指定的方法。现在就有意义了。谢谢。@superigno-很高兴帮助你
find
将在选择器元素的html中搜索,即在我们的例子中,它将尝试并返回
input
select
元素,这些元素具有类
a
的父元素。但是,由于没有返回任何元素,
.val()
将返回
未定义的
。因此,要将
元素
选择器一起使用,您需要遵循指定的方法。现在就有意义了。谢谢。@superigno-很高兴帮助你!我们可以使用
.filter()
,但在这里获取所有元素然后对它们进行过滤是一种过分的操作,最简单的方法是使用
select.a
input.a
,正如您在注释中所建议的那样。@chŝdk我知道最简单的方法,这就是我在注释中所建议的;)但他似乎坚持使用find,在这种情况下,他想要的是filter函数,而不是findYes。在这种情况下,它只能用作
.find()
;)的替代品我们可以使用
.filter()
,但在这里获取所有元素然后对它们进行过滤是一种过分的操作,最简单的方法是使用
select.a
input.a
,正如您在注释中所建议的那样。@chŝdk我知道最简单的方法,这就是我在注释中所建议的;)但他似乎坚持使用find,在这种情况下,他想要的是filter函数,而不是findYes。在这种情况下,它只能用作
.find()
;)的替代品谢谢你的澄清谢谢你的澄清