Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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 要选择哪些事件将处理程序从委托给所选的?_Javascript_Handler_Html Select_Event Bubbling_Event Capturing - Fatal编程技术网

Javascript 要选择哪些事件将处理程序从委托给所选的?

Javascript 要选择哪些事件将处理程序从委托给所选的?,javascript,handler,html-select,event-bubbling,event-capturing,Javascript,Handler,Html Select,Event Bubbling,Event Capturing,当在控件中选择另一个时,可以使用触发的处理程序以非常直接的方式处理此事件。 然而,由于某些原因,我的项目使用委托触发的处理程序将非常方便。 我尝试使用不同的事件触发并委托所需的处理程序。结果不令人满意: onfocus、onchange和onkeyup处理程序仅在控件上触发,而不是在嵌套的控件上触发。 onclick处理程序根据需要工作,并在选定的服务器上触发。然而,使用这个处理程序显然毫无意义,因为选择控件中的另一个选项也可以通过键盘选择,而不仅仅是鼠标。 我说得对吗?我是否错过了任何可以在本

当在控件中选择另一个时,可以使用触发的处理程序以非常直接的方式处理此事件。 然而,由于某些原因,我的项目使用委托触发的处理程序将非常方便。 我尝试使用不同的事件触发并委托所需的处理程序。结果不令人满意:

onfocus、onchange和onkeyup处理程序仅在控件上触发,而不是在嵌套的控件上触发。 onclick处理程序根据需要工作,并在选定的服务器上触发。然而,使用这个处理程序显然毫无意义,因为选择控件中的另一个选项也可以通过键盘选择,而不仅仅是鼠标。
我说得对吗?我是否错过了任何可以在本案例中使用的标准DOM事件?或者我只需要使用一种polyfill,比如jQuery的focusin和focusout?

我不确定我是否完全理解您的需求,但我会尝试回答

在您谈论jQuery时,我有一个解决方案:

$("#my-select").change(function() {
    // $(this) refers to the select element
    $(this).find("option:selected").each(function() {
        // this function is called only once per change
        // $(this) refers to the selected option
    })
});
实例:

$my-select.changefunction{ //$this指的是select元素 $s_value.text$this.val; $s_text.text$this.findoption:selected.text; $this.findoption:selected.eachfunction{ //每次更改仅调用一次此函数 //$这是指所选的选项 $o_value.text$this.val; $o_text.text$this.text; } } 选择1 选择2 选择3 从选择中选择: 价值: 正文: 从选项中选择: 价值: 正文:
我不确定我是否完全理解你的需要,但我会尽力回答

在您谈论jQuery时,我有一个解决方案:

$("#my-select").change(function() {
    // $(this) refers to the select element
    $(this).find("option:selected").each(function() {
        // this function is called only once per change
        // $(this) refers to the selected option
    })
});
实例:

$my-select.changefunction{ //$this指的是select元素 $s_value.text$this.val; $s_text.text$this.findoption:selected.text; $this.findoption:selected.eachfunction{ //每次更改仅调用一次此函数 //$这是指所选的选项 $o_value.text$this.val; $o_text.text$this.text; } } 选择1 选择2 选择3 从选择中选择: 价值: 正文: 从选项中选择: 价值: 正文:
从讨论中可以看出,没有满足指定要求的DOM事件。

从讨论中可以看出,没有满足指定要求的DOM事件。

选择框的实现在浏览器之间非常不同,它们通常甚至不响应正常的DOM事件,但在浏览器中是“暮光之区”的一部分。顺便说一句,我目前使用Firefox。不同浏览器中选择框的实现非常不同,它们通常甚至不响应正常的DOM事件,而是浏览器中“暮光之区”的一部分。顺便说一句,我目前使用Firefox。很好的尝试,@aplo,非常感谢。不幸的是,我不想在这种情况下使用jQuery。让我用另一种方式来解释我的问题。当然,我们可以为一系列标准DOM事件中的每个事件为控件分配一个处理程序。我希望,当选择此选项时,可以选择一个事件,该事件将触发为此事件分配的处理程序。在我看来,这是不可能的。正如你所说,这是不可能的。但是您可以从select事件中获得相同的行为。你可以把我的答案翻译成纯js。如果你不能,我星期一试试。在select elemeny的onchange事件上放置一个处理程序,并获取selected选项。非常感谢,我自己可以做到这一点。我的问题是,在我的项目中,我需要维护特定页面中应用的处理程序的历史记录。最初,我创建了这个历史记录作为动作列表aka pairs[element,handler],并且没有在这个列表中包含任何重复上一个动作的动作对。但在这种方法中,相同的不同的连续选择看起来像相同的动作,因此只有第一个动作进入历史。因为现在我必须重新考虑这个算法。很好的尝试,@Apolo,谢谢你。不幸的是,我不想在这种情况下使用jQuery。让我用另一种方式来解释我的问题。当然,我们可以为一系列标准DOM事件中的每个事件为控件分配一个处理程序。我希望,当选择此选项时,可以选择一个事件,该事件将触发为此事件分配的处理程序。在我看来,这是不可能的。正如你所说,这是不可能的。但是您可以从select事件中获得相同的行为。你可以把我的答案翻译成纯js。如果你不能,我星期一试试。在select elemeny的onchange事件上放置一个处理程序,并获取selected选项。非常感谢,我自己可以做到这一点。我的问题是,在我的项目中,我需要维护特定页面中应用的处理程序的历史记录。最初,我创建了这个历史记录作为动作列表aka pairs[element,handler],并且没有在这个列表中包含任何重复上一个动作的动作对。但在这种方法中,连续的 同一个国家的不同政党的选举看起来像是同一个行动,因此只有第一次进入历史。因为现在我必须重新考虑这个算法。