我试图通过了解this
的工作原理来改进我的jQuery代码。我做了这个代码:
$('.type, #type').on('change', function() {
selected = $(".type, #type :selected").val();
show = selected != 0 ? true : false;
$(".div").toggle(show);
});
并且有一些困难:
.type, #type
,但是如果我想编写一个在任何属性中匹配相同值的选择器呢?例如:class=type, id=type, name=type
,是否可以为该案例编写选择器?怎么样?this
,如果我使用选择器.type, #type
,那么我将拥有一个包含所有内容的DOM对象该对象的属性,对吧?那么如何访问对象属性或方法呢?例如:selected = $(".type, #type :selected").val();
获取selected
所选选项的值我试过这个selected = $(this + " :selected").val();
但是没有工作有任何建议或帮助吗?你对我的代码做了哪些改进?
答案 0 :(得分:1)
回答你的两个问题:
1)通过创建变量并使用它来实现此目的的唯一方法是:
var name = 'type';
$('.' + name + ', #' + name).on(...)
2)你可以这样使用this
:
$('.type, #type').on('change', function() {
selected = $(this).val();
show = selected != 0 ? true : false;
$(".div").toggle(show);
});
答案 1 :(得分:1)
看看jQuery的选择器部分,没有指定你想要的所有元素,你不能只选择"选择"他们神奇地。请记住,您可以执行以下操作:
$('input[type="text"]')
在第二个问题中,您可以使用:
$(this).find('option:selected').val()
而且,作为旁注,请查看 toggle
答案 2 :(得分:0)
要通过ID和类访问,您已经完成了,
.type is class="type"
#type is id="type"
下一个,
name="type"
略有不同,根据您实际需要的内容,您可以使用find()方法,但通常情况下,您将知道选择器类型,然后您可以使用
$(selector).attr('name')
它的属性。
使用'这个'在:选定的构造没有工作,没有一些变量hackery,我建议避免它,只是重写整个声明