Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript查找具有选定属性的select选项_Javascript_Jquery_Html - Fatal编程技术网

使用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@Regent
this.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属性使用)。