Javascript 替代性解决方案。抱歉:-(您不是在寻找所选的事件吗?我在Firefox(最新干线)的Opera中看到了“再次按下鼠标”、Win7 x64上的Chrome和IE。@Shadow2531您使用的是哪个版本的Opera?Opera 11.62只返回鼠标下键,与S

Javascript 替代性解决方案。抱歉:-(您不是在寻找所选的事件吗?我在Firefox(最新干线)的Opera中看到了“再次按下鼠标”、Win7 x64上的Chrome和IE。@Shadow2531您使用的是哪个版本的Opera?Opera 11.62只返回鼠标下键,与S,javascript,html,internet-explorer,firefox,webkit,Javascript,Html,Internet Explorer,Firefox,Webkit,替代性解决方案。抱歉:-(您不是在寻找所选的事件吗?我在Firefox(最新干线)的Opera中看到了“再次按下鼠标”、Win7 x64上的Chrome和IE。@Shadow2531您使用的是哪个版本的Opera?Opera 11.62只返回鼠标下键,与Safari 5.1.5和OS X 10上的Chrome相同。7@KayZhu我在Win7 x64上使用Opera 11.62 Final和Opera 12.00.1328。我实际上是在“放下鼠标”在Win 7 x64.onchange上的.FF


替代性解决方案。抱歉:-(

您不是在寻找所选的事件吗?我在Firefox(最新干线)的Opera中看到了“再次按下鼠标”、Win7 x64上的Chrome和IE。@Shadow2531您使用的是哪个版本的Opera?Opera 11.62只返回
鼠标下键
,与Safari 5.1.5和OS X 10上的Chrome相同。7@KayZhu我在Win7 x64上使用Opera 11.62 Final和Opera 12.00.1328。我实际上是在“放下鼠标”在Win 7 x64.onchange上的.FF 11.0和Chrome 20.0.1096.1 dev-m两种浏览器中,onchange都是一个很好的开始,但是如果你用键盘选择,它会触发太多。也许你的插件会对此表示感谢。你知道吗?谢谢你的输入。但我的问题根本不是关于
onchange
,你回答了自己的问题,它不会触发事件当选择相同时。我的问题只是关于为什么在不同的浏览器中出现这种差异,以及如何在使用它时消除这种差异。因为问题是关于点击事件,我没有答案。但问题的解决方案是使用正确的事件。这可能是onchange。正如@juzerali所写.在学术笔记上:点击事件是否在ecmascript中准确指定?-嗯。这可能就是你问题的答案:“它没有指定”@LosManos恕我直言,我的问题已经明确指出,
onchange
根本不是一个选项,因为即使选择相同,也需要触发所需的效果,即没有更改。不过,感谢您的指导,我可能应该更早地查看ECMAScript规范的定义。我的猜测是你是对的,这种行为可能在不同的浏览器中定义模糊,解释也不同。这似乎是OSx和JSFIDLE上的FF的问题。这种行为确实有效,但复制到JSFIDLE中的相同HTML不起作用。我认为答案是——由于不同的JavaScript引擎和实现——这种行为将在这些不同的浏览器上,使用
点击
事件是不一样的,“解决方案”是更改HTML(如您在这里所说)或更改JavaScript事件(如juzerali所说)。我认为区别在于Chrome,你在点击一个假的选项列表,而在Firefox中,你实际上在点击选项元素。你是否尝试过使用
if(!$(event.target)。is('option')…;
?@Kay Zhu-我无法在W7 x64上重现FF11中的问题。但是,你是否尝试过使用event.stopPropagation()在您的事件绑定中?我想知道这是否是由于选择框的呈现方式导致的事件冒泡问题。@kmfk谢谢,是的,在我的实验中,我确实尝试过
event.stopPropagation
,但也没有帮助..谢谢!我遇到了同样的问题,最终使用了比普通绑定更好的方法
选择
。根据可用性问题,最好使用本机控件,但此时设计对我来说更重要。
<select id="sel">
    <option>one</option>
    <option>two</option>
    <option>three</option>​
</select>
<script>
function select() {
    $("#sel").one("click", function(event) {
        console.log('mouse down!');
        $("#sel").one('click', function() {
            console.log('mouse down again!');
            $("#sel").off();
            select();
        });
    });
}
$(document).ready(function() {
    select();
});
</script>
mouse down!
mouse down!
mouse down again!
$("#sel").change(function(){
    $('body').append("<br/> Option changed");
});
$("#sel").click(function(event) {
    if($(event.target).is('option')) {
        $(this).closest('select').click();
        return true;
    }
    console.log(event.target);
});