【问题标题】:Event binding problem on select option (jquery)选择选项(jquery)上的事件绑定问题
【发布时间】:2013-05-31 03:11:19
【问题描述】:

我有一个带有 id 'option1' 的选项的选择。 option1 是页面加载时当前选择的选项。

在我的 $(document).ready 中,我有:

$(document).ready(function()
{
    $("#option1").click(function()
    {
        alert("Testing");
    });
});

但是,警报永远不会显示并且事件永远不会触发!与选择本身相反,在选择选项上发生事件是不可能的或某些事情?

注意:

  1. 我不认为我可以绑定到选择的 click() 事件,因为我只希望在当前选择的选项被点击/再次选择时触发该事件。
  2. 我不能使用 select 的 change() 事件,因为我只希望它在当前选择的选项被点击时触发,因此该选项不会改变。

谢谢

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    1 是正确的,至少在 IE 中是正确的(它在 Firefox 中有效)。 onclick 不会为 option 元素触发。

    【讨论】:

    • 啊。你能想到任何其他方式我可以执行一些代码,只有当当前选择的选项(总是在索引 0 处)被再次点击?
    • @AndyC:在 IE 中,当你点击一个选项时,onclick 事件将为 select 元素触发。如果是下拉选择,您可以测试鼠标坐标是否在选择元素的边界之外,如果选项没有更改,请执行您的操作。如果是多选或列表,那我不太确定。
    • 对我来说,虽然看起来选择元素的 onclick 事件会在您单击下拉列表时触发,即在您单击特定选项之前?
    • @AndyC:这就是为什么我说你需要检查鼠标是否在select 元素的边界之外。如果它在边界内,你什么都不会。
    【解决方案2】:

    afaik 无法绑定单击选项。

    看看Click event on select option element in chrome

    这基本上建议使用父选择并检查在触发时是否选择了该特定选项。

    【讨论】:

    • 问题是我不能使用 select 的 change() 事件,因为如果选项 没有 发生变化,我想执行代码(基本上他们点击当前选择的再一次。据我所知,仅当用户选择与已选择的选项不同的选项时才会触发 change()?
    • 不是最简洁的解决方案,但您可以将当前值存储在 cough 全局 cough 变量中,并在更改事件中与新值进行比较价值。
    【解决方案3】:

    给每个选项相同的类别。例如 <select id='options'><option class='opt' value = '1'>option1/<option class='opt' value = '2'>option2</option></select> 现在要监听一个事件,你可以这样做:$('.opt').on('click', function(){ alert($('#options').val());});

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-16
      • 1970-01-01
      • 1970-01-01
      • 2019-06-27
      • 1970-01-01
      • 2015-01-11
      相关资源
      最近更新 更多