Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.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_Jquery - Fatal编程技术网

Javascript 如何将事件处理程序绑定到<;选项>;

Javascript 如何将事件处理程序绑定到<;选项>;,javascript,jquery,Javascript,Jquery,这是我的密码: $(".multiple").each(function() { $(this).bind("mousedown",function() { alert(); }); }); 以下是它适用于的HTML: <select> <option value = "textbox">TextBox</option> <option class = "multiple" value =

这是我的密码:

$(".multiple").each(function() {
        $(this).bind("mousedown",function() {
            alert();
        });
    });
以下是它适用于的HTML:

<select>
<option value = "textbox">TextBox</option>
<option class = "multiple" value = "multiplechoice">MultipleChoice</option>
<option class = "multiple" value = "dropdown">DropDown</option>
</select>

文本框
多重回声
下拉列表

我希望看到某种警报框,但它似乎不起作用。如何修复此问题?

我不确定是否可以将事件绑定到
选项
元素,因为它们是由浏览器绘制的,并且属于一次渲染(我认为)

但是,你可以这样做

$('select').change(function() {
    alert('Selected is ' + $(this).find('option:selected').text());
});

.

我不确定是否可以将事件绑定到
选项
元素,因为它们是由浏览器绘制的,属于一次渲染(我认为)

但是,你可以这样做

$('select').change(function() {
    alert('Selected is ' + $(this).find('option:selected').text());
});

.

可能是这样的吧

$('.multiple').change(function(){
    alert('something');
    });
HTML:


文本框
多重回声
下拉列表

可能是这样的吧

$('.multiple').change(function(){
    alert('something');
    });
HTML:


文本框
多重回声
下拉列表

不要去那里-根据经验。这不是一个跨浏览器的解决方案。
我的建议是,在select的“change”事件中,测试当前选择的选项是否具有“multiple”类,如果是,则运行特定的逻辑。

不要去那里-根据经验。这不是一个跨浏览器的解决方案。
我的建议是,在select的“change”事件中,测试当前所选选项是否具有“multiple”类,如果是,则运行特定逻辑。

您可以捕获select上的事件,并按选项类对其进行过滤

$('select').change(function() {
    var o = $(this).find('option:selected');
    if ('multiple' != o.attr('class')) {
        return;
    }
    alert('Clicked: ' + o.text());
});

您也可以使用
click()
而不是
change()
来获得不会导致更改的单击,但是如果您的选择是
size=“1”
,您将获得也会下拉选择的单击。这种方法要求事件处理程序考虑误报,因此不鼓励使用。

您可以在select上捕获事件,并按选项类对其进行过滤

$('select').change(function() {
    var o = $(this).find('option:selected');
    if ('multiple' != o.attr('class')) {
        return;
    }
    alert('Clicked: ' + o.text());
});

您也可以使用
click()
而不是
change()
来获得不会导致更改的单击,但是如果您的选择是
size=“1”
,您将获得也会下拉选择的单击。这种方法需要您的事件处理程序对误报进行解释,因此不鼓励使用这种方法。

存在一个问题。。。当用户单击已选择的选项时,事件将不会触发此问题。。。当用户单击已选择的选项时,事件将不会触发此问题。。。当用户单击已选择的选项时,不会触发该事件,因此他也可以注册以单击选择并右键,只有当src元素是选项标记(而不是更改)时,才能使用相同的逻辑。我们将,我的错。似乎在所有情况下,“select”都是src元素。但是,您可以将此小提琴视为解决方案。我所做的是注册到click事件,现在我可以控制执行部分逻辑,如果值已经更改,而其他部分没有更改。基本上我们有完全的控制权:那里有个问题。。。当用户单击已选择的选项时,不会触发该事件,因此他也可以注册以单击选择并右键,只有当src元素是选项标记(而不是更改)时,才能使用相同的逻辑。我们将,我的错。似乎在所有情况下,“select”都是src元素。但是,您可以将此小提琴视为解决方案。我所做的是注册到click事件,现在我可以控制执行部分逻辑,如果值已经更改,而其他部分没有更改。基本上我们有完全的控制权:那里有个问题。。。当用户单击已选择的选项时,事件将不会触发此问题。。。当用户单击已选择的选项时,不会触发事件
alert()没有显示任何内容,因为第一个参数是必需的。指定任何参数以使其工作。即使
void 0
也可以完成此任务。我通常使用
alert(0)
进行快速调试没有显示任何内容,因为第一个参数是必需的。指定任何参数以使其工作。即使
void 0
也可以完成此任务。我通常使用
alert(0)
进行快速调试。