如何使用jQuery捕获<select>上的第二个选择?</select>

时间:2009-09-21 15:23:12

标签: jquery select click

第一次点击会展开<option>

第二次点击选择其中一个。

如何抓住第二次点击?

4 个答案:

答案 0 :(得分:2)

您可以使用jQuery's one function链接一些事件,如下所示:

$('select').one('click', firstClick);

function firstClick(evt) {
    //do anything you might want to do
    $(evt.target).parent().one('click', secondClick);
}

function secondClick(evt) {
    //again, do you thing
    $(evt.target).parent().one('click', firstClick);
}

one函数将执行您提供的事件处理程序一次,然后将其删除。此解决方案允许您在每次单击时切换处理程序。如果你使用这个,请小心。您还需要处理blur事件以重置第一个处理程序。

您还可以使用jQuery's live function来最小化您正在创建的事件处理程序的数量,从而节省内存。这也将避免我在第一个解决方案中可以预见的一些问题。

$('select option').live('click', selectHandler);

function selectHandler(evt) {
    //insert magic here
}

答案 1 :(得分:1)

我认为Pete的答案的jQuery版本可以满足问题

$("option").click(function(){
   alert($(this).text());
});

修改

由于上面没有跨浏览器,我做了一些搜索,并在这里发现了一个关于堆栈溢出的帖子,这可能会有所帮助。

Fire event each time a DropDownList item is selected with jQuery

答案 2 :(得分:0)

如果选择已更改,则调用onchange方法。

答案 3 :(得分:0)

你总是可以在组合框中的每个选项上使用onclick。它不漂亮,但应该有效:

<select>
    <option onclick="alert('May');">May</option>
    <option onclick="alert('June');">June</option>
    <option onclick="alert('July');">July</option>
</select>