【问题标题】:Is there any on select event for select for jquery?是否有任何用于选择 jquery 的选择事件?
【发布时间】:2012-03-11 22:38:20
【问题描述】:

好的,我有一个下拉菜单,我使用

$('select.small').change ...

它有几个选项,但问题是,当我选择第一个选项时 - 没有任何反应 - 因为它已经被选中。有什么方法可以实现吗?

到目前为止,我使用了一个额外的空选项,它默认被选中并且什么也没做,但是现在我必须使用这个第一个空选项进行清理,所以我不能添加一个额外的默认和空选项。

请指教。

编辑:LMAO,我最终这样做了:

$('select.small').change(function(){
    alert('you selected some option');
});

$('select.small').bind('focus',function(){
    $('select.small').click(function(){
        $('select.small').click(function(){
        if((this).val()=='') $('select.small').trigger('change');
        $('select.small').unbind('click');
        });
    });
});

但有时会出问题 =(

我简直不敢相信没有人知道解决方案。

【问题讨论】:

  • 为什么不选择第一个并在页面加载时触发更改回调?如果您重新选择第一个选项,则不需要触发。
  • 如果第一个选项已经被选中,难道你不能在加载页面时为该选项做需要做的事情,而不是等到用户尝试选择该选项吗?这不是更合适,因为用户可能只是看到默认值而不管它吗?
  • 从技术上讲,如果您打开下拉框并选择第一个条目,那么您实际上并没有选择任何内容。您(程序员)已经知道默认选择的选项是什么,因此当有人选择它时不必提示您。同样,人们不太可能来到您的站点,看到一个带有他们想要选择的选项的下拉框,然后打开选择框并重新选择已经存在的选项。即使我想查看其他选项,我也可以打开下拉菜单,但是当我意识到我想要的选项已经被选中时,请单击它。
  • 2GGG:不,第一个选项必须用于清理旁边的输入,默认情况下它有一些值
  • 2David:不,看不到默认值,因为它太小而看不到。一旦他们点击并出现下拉菜单,他们就会看到。

标签: javascript jquery select option onchange


【解决方案1】:

如果您的意思是从页面加载时开始,请尝试在设置更改回调后立即调用更改方法;这实际上就像用户立即选择了它一样:

$('select.small').change(function() {
  //..
}).change();

【讨论】:

  • 它与加载页面无关。所有需要触发的都已经触发了。这不是我需要的。
【解决方案2】:

我做到了。我会自豪地回答自己,

$('select.small').bind('focus click',function(){
    $(this).children().removeAttr('selected');
});

【讨论】:

    猜你喜欢
    • 2013-03-17
    • 1970-01-01
    • 2013-06-03
    • 2011-01-24
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多