【问题标题】:ajax not working on chrome (that worked in firefox) possibly due to event errorajax 无法在 chrome 上工作(在 firefox 中工作)可能是由于事件错误
【发布时间】:2011-02-03 15:10:04
【问题描述】:

我的脚本无法在 chrome 上运行,但在 firefox 上运行良好

脚本如下,r_tour是select元素的id,option是一个option

$("#r_tour option").click(function(){
     var value = $(this).val(); $.post(      
        'url',
        {"id": value}, function(data){
        $(div).html(data);}, "html" ); 
})

链接是here。在此链接上,您将获得从 ajax 加载的默认值(因为 ajax 在文档加载时被调用)但是(ajax 请求的事件事件将不会加载)。

我认为这可能是由于事件,但仍然没有线索。

更新::

这段代码也不能在我的本地服务器上运行

$(function (){
$("#r_tour option").click(function(){
     var value = $(this).val(); 
     alert(value);
})
});

【问题讨论】:

  • 您是否考虑过在选择元素上使用更改事件而不是单击选项?我可以相信单击选项可能会出现问题,因为它们自己并不真正存在,它们只是选择的数据,因此chrome(正确或错误)可能会像这样处理它们。我应该注意到 change 事件的行为也可能略有不同(因为单击当前选定的项目时不会触发该事件)。
  • 是的!克里斯,你是对的,Duchie432 也是如此!
  • 好答案。不确定谁先到,所以 +1!

标签: jquery ajax google-chrome cross-browser


【解决方案1】:

您能否验证这是否适合您?它应该完成同样的事情。

$("#r_tour option").click(function(){
     var value = $(this).val(); 
     $(div).load (url, 'id=' + uriEncodeComponent(value));
})

更新

我现在明白了。 #r_tour 好像是一个选择框,为什么不直接在选择框的值发生变化时触发这段代码呢?使用$("#r_tour").change() 而不是$("#r_tour option").click()

http://jsfiddle.net/L5Ktr/1/

$("#r_tour").change(function(){
     var value = $(this).val(); 
     $(div).load (url, 'id=' + uriEncodeComponent(value));
})

【讨论】:

    【解决方案2】:

    你可以试试这个:

    $("#r_tour option").live("click", function(){
         var value = $(this).val(); 
         $(div).load(url, { id: value});
    });
    

    还有这段代码?:

    $("#r_tour").live("click", function(){
         var value = $(this).val(); 
         alert(value);
    });
    

    【讨论】:

    • 现在也可以了。我的意思是你的代码在 Firefox 上运行良好。你确定它适用于 chrome
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2010-12-27
    • 2011-02-12
    • 1970-01-01
    相关资源
    最近更新 更多