使用javascript查找具有选定属性的select选项
我有一个视图,可以在单击某些按钮时将使用javascript查找具有选定属性的select选项,javascript,jquery,html,Javascript,Jquery,Html,我有一个视图,可以在单击某些按钮时将select元素动态加载到页面中。这些selects中的每一个都具有相同的id值,后跟一个基于按钮单击次数的索引值。所以身份证应该是这样的 id="my_id_" + numOfClicks; 我也给了所有这些选择器相同的类值 class="selects" 当所选选项在任何下拉列表中发生更改时,使用事件处理程序的最佳方式是什么。现在我有以下几点: $('.selects').change(function() { if($('this optio
select
元素动态加载到页面中。这些select
s中的每一个都具有相同的id值,后跟一个基于按钮单击次数的索引值。所以身份证应该是这样的
id="my_id_" + numOfClicks;
我也给了所有这些选择器相同的类值
class="selects"
当所选选项在任何下拉列表中发生更改时,使用事件处理程序的最佳方式是什么。现在我有以下几点:
$('.selects').change(function() {
if($('this option:selected').val() == 0) {
}
else {
}
});
所以我要做的是首先使用“this”获得正确的select元素,然后确定选择了哪些选项。有更好/更有效的方法吗?假设html输入。选择:
$('body').on('change', '.selects', function() {
if($(this).val() == '0') {
}
else {
}
});
没有引用。正如您所说,这些是在运行时添加的,您需要一个委托事件处理程序。正如注释所指出的,在处理程序中,只需
$(this).val()
即可获取该选择框的选定值。因此:
$("selector for some container they're in").on("change", ".selects", function() {
if($(this).val() == 0) {
}
else {
}
});
例如,如果它们都在类为容器的元素中,则:
$(".container").on("change", ".selects", function() {
if($(this).val() == 0) {
}
else {
}
});
如果没有其他合适的容器,您可以使用(…
)上的$(document).on,但通常情况下,处理事情时最好离它们所在的位置更近一点
旁注:值始终是字符串,但是==
将强制执行,因此“0”==0
是正确的。不过,记住它们是字符串还是很有用的。您可以使用$(this).val()
但是如果您将上下文设置为正确的if($('option:selected',this),您也可以使用您的方法
也可以这样使用。value@Regentthis.value
。看起来有一些选项可用,让我尝试使用this.value
,而不是$(this.val()
。我倾向于使用$(“body”)。on('change','selects',function(){
…这将更有效地处理动态添加的元素。@james donnelly,this.value是首选,但jQuery抽象似乎对许多新程序员有帮助。此外,DOM对象上可能有更多的jQuery。当您有var$this=$(this)时,它使代码更易于阅读然后坚持jQuery约定,这样你就不必一直查找哪些方法对vanilla和jQuery对象有效,哪些方法对vanilla和jQuery对象无效。当你只需要做一些事情时,这是一个很好的选择,而且只需要一小部分。但最终,我同意,一旦你知道如何使用jQuery,不使用jQuery会更容易。但这是一个jQuery标记。编辑:固定名称和广告关于标记的注意事项。我认为this.value会获取视图首次加载时分配的值,如果选择发生更改,它不会更新?或者这不是真的?我知道在尝试使用.value而不是.val()时使用文本类型输入,如果输入文本在页面加载后发生更改that@AbdulAhmad:您正在考虑输入
元素上的值
属性:值
属性反映输入
(或选择
)的当前值,但是(在输入
上)value
属性不会更改(可通过defaultValue
reflected属性使用)。