【问题标题】:Cross browser jquery跨浏览器jquery
【发布时间】:2013-05-12 04:01:28
【问题描述】:

我有一些 jquery 和 ajax 函数可以在 google chrome 中完美运行。当我在 Firefox 中使用它们时,虽然在我的实时服务器上它不起作用。这是 Firefox 中的一个已知问题,还是我错过了一个简单的解决方案?我认为这主要是 AJAX 代码有问题,但我不确定。

这是我的 jquery 代码....

$(document).ready(function(){
    $("a[id ^= 'toggle']").live("click", function(){
        event.preventDefault();
        $("div [id='replypost_"+$(this).attr('id').replace('toggle_','')+"']").toggle();
    });
});

注意:它在 Internet Explorer 中也不起作用。它只适用于谷歌浏览器!

【问题讨论】:

  • 小心选择器中的空格,这可能是问题所在。

标签: javascript jquery ajax firefox cross-browser


【解决方案1】:

你用的是什么版本的jquery?

没有定义event

试试这个?

$(document).ready(function(){
        $("a[id^='toggle']").live("click", function(event){
           event.preventDefault();
           $("div [id='replypost_"+$(this).attr('id').replace('toggle_','')+"']").toggle();
       });
 });

从 jQuery 1.7 开始,不推荐使用 .live() 方法。使用 .on() 来 附加事件处理程序。旧版本 jQuery 的用户应该使用 .delegate() 优先于 .live()。

$(document).ready(function(){
        $("a").on("click", "a[id^='toggle']", function(event){
           event.preventDefault();
           $("div [id='replypost_"+$(this).attr('id').replace('toggle_','')+"']").toggle();
       });
 });

【讨论】:

  • 我敢打赌,问题在于 event 没有被定义为参数。您使用 .on() 的方式不是.live() 等效的方式。
  • 我正在使用 .live() 来处理现在和未来的对象。
  • @KeithDrakeWaggoner 你必须使用类似$(document).on("click", "a[id^='toggle']", function (event) { });
  • @Keith live() is deprecated。它的文档建议改用 on(),旧版本应该改用 delegate()。
  • 知道了,非常感谢你,我需要定义事件
猜你喜欢
  • 2011-03-30
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
  • 2017-11-17
  • 2013-11-12
  • 2011-06-07
  • 2011-12-28
  • 1970-01-01
相关资源
最近更新 更多