【问题标题】:jQuery doesn't work on Firefox but works on ChromejQuery 不能在 Firefox 上运行,但可以在 Chrome 上运行
【发布时间】:2018-09-26 00:01:38
【问题描述】:

我有这个jQuery 代码:

function action(action){
    event.preventDefault();
    var products = $("#check-list input:checkbox:checked").map(function(){
      return $(this).val();
    }).get();
    var string = JSON.stringify(products);
    var table = $('#table').val();

    if(products.length != '0' || action === 'old-all'){
        $.ajax({
            type: 'post',
            url: 'app/toolbar.php',
            data: {action:action, table:table, ids:string},
            success:function(data){
                localStorage.setItem('notify', data);
                location.reload();
            },
        });
    } else{
        notify('You must choose an element first');
    }
}

我正在使用jQuery 3.3.1

如果我点击一个按钮而不选中复选框,我应该得到You must choose an element first,但如果我选择一个元素,toolbar.php 应该运行并执行它必须完成的事情(根据按下哪个按钮:

<button class="grey-btn" onClick="action('delete')">Delete</button>
<button class="grey-btn" onClick="action('update')">Update</button>

它完美地适用于Chrome,但它不适用于Firefox。我正在尝试一些我在其他类似的“适用于 chrome 但不适用于 firefox”问题上找到的答案,但它们都没有奏效:(

【问题讨论】:

  • 事件未定义
  • 您能分享一下您在控制台中遇到的异常吗?
  • @epascarello 你能帮我定义一下吗? X_X
  • @BrankVictoria 在 Firefox 中控制台是空的,没有消息没有任何东西:-s
  • @BrankVictoria 实际上我再次检查,控制台说:ReferenceError: event is not defined

标签: javascript jquery ajax cross-browser


【解决方案1】:

您没有定义事件,所以这是您的问题。摆脱使用内联事件处理程序并将其与 jQuery 绑定。

$("[data-action]").on("click", function (event) {
  event.preventDefault();
  var btn = $(this);
  var action = btn.data("action");
  console.log(action);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="grey-btn" data-action='delete'>Delete</button>
<button class="grey-btn" data-action='update'>Update</button>

如果你真的想使用内联事件处理程序而不是这样做

function action (event, method) {
  event.preventDefault();
  console.log(method);
}
<button class="grey-btn" onClick="action(event, 'delete')">Delete</button>
<button class="grey-btn" onClick="action(event, 'update')">Update</button>

【讨论】:

  • 嘿@epascarello 谢谢你uuuuuuuuuuuu! :D 我将使用内联事件,因为我无法理解另一个事件:-s
  • 啊哈哈哈......@emma......你让我笑了很多! +1大家! :D
  • :D 好吧,如果我不擅长 jQuery,至少我可以开一些看起来很有趣的笑话@ReSedano:D
  • @emma,我们都在努力改进,所以永远不要放弃! ;)
猜你喜欢
  • 1970-01-01
  • 2021-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多