jQuery Live是否适用于Safari?

时间:2009-10-26 14:28:33

标签: javascript jquery

我刚刚问了这个问题an hour ago但是关于IE8,我被告知JQuery Live处理程序不支持“更改”所以我切换到“点击”,这解决了我的问题,现在我发现Safari因为某些奇怪的原因无法点击,有人知道为什么吗?

所以我想我可以同时拥有两个吗?

$('select.htt, select.hst').live('click', function() {
    var channels = parseInt($('#fancy_div select.hst').val(), 10) * parseInt($('#fancy_div select.htt').val(), 10);         
    $('#fancy_div span.yellow2').html(channels + ' Channels');
});

改变(适用于野生动物园)

$('select.htt, select.hst').live('change', function() {
    var channels = parseInt($('#fancy_div select.hst').val(), 10) * parseInt($('#fancy_div select.htt').val(), 10);         
    $('#fancy_div span.yellow2').html(channels + ' Channels');
});

还是有更优雅的东西?

修改

也许我可以做一个有条件的。 if ($.browser.msie但是我如何使用上述方法执行此操作,上面的内容也是$(document).ready(function()

4 个答案:

答案 0 :(得分:4)

试试这个:

$('select.htt, select.hst').live($.browser.msie?'click':'change', function() { ....

答案 1 :(得分:3)

您似乎遇到了一系列问题:

  1. The change event does not bubble in IE,而click事件
  2. The click event does not fire/buuble on <select>/<option> elements in Safari,而change事件
  3. 我不确定你的情况最好的前进方式。

答案 2 :(得分:1)

更改事件不应在任何浏览器中冒泡。

只要将菜单添加到DOM,我就会让你的代码重新绑定更改处理程序,或者如果服务器脚本生成它,甚至可以在select中添加onchange属性。

答案 3 :(得分:0)

阅读错误列表(http://bugs.jquery.com/ticket/5677),将以下CSS添加到元素中也是一个解决方案:

<style>
  element {
      cursor : pointer;
  }
</style>

适用于带有safari的iphone4

Reference