Javascript 设置具有相同css类的两个元素的值
我对选择下拉列表和输入文本框使用相同的css。我在jquery中设置如下值: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 这是我的小提琴:您的选择器
$('.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()
;)的替代品谢谢你的澄清谢谢你的澄清