jQuery不适用于Firefox,但适用于Chrome

emm*_*mma 2 javascript ajax jquery cross-browser

我有这个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');
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用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>
Run Code Online (Sandbox Code Playgroud)

Chrome完美地工作但它不起作用Firefox.我正在尝试一些答案,我在其他类似的'铬上的作品,但没有在Firefox上'的问题,但他们都没有一个工作:(

epa*_*llo 8

您没有定义事件,因此这是您的问题.远离使用内联事件处理程序并将其与jQuery绑定.

$("[data-action]").on("click", function (event) {
  event.preventDefault();
  var btn = $(this);
  var action = btn.data("action");
  console.log(action);
});
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

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

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