【问题标题】:Jquery button click event not firingJquery按钮单击事件未触发
【发布时间】:2013-10-14 18:11:46
【问题描述】:

似乎是一个简单的问题,但其他问题的解决方案似乎对我不起作用。

试图通过单击按钮触发 AJAX 请求,但似乎没有触发。

示例 HTML

<button class="remove_weight_button" id="15">x</button>

javascript

$(".remove_weight_button").click(function(){
    var button_id = $(this).attr("id");
    $.ajax({
        type: "POST",
        url: "weight_tracker_process.php",
        data: {
            weight_id: button_id,
            action: "remove"
        },
        success: function(){
            getWeightData();
        },
        error: function(){
            alert("data removal error");
        }
    });
    return false;
});

【问题讨论】:

  • 首先,您是否在控制台中看到任何错误?它是否到达处理程序(如果没有,它是否包含在 document.ready 中),您是否看到任何 js 错误或网络错误控制台?
  • 您确定在 按钮加载后正在运行 javascript?这是一个常见的错误。
  • 尝试在函数顶部添加阻止默认值

标签: javascript jquery html ajax


【解决方案1】:

您的代码在小提琴中运行良好。您的按钮是否在初始页面加载后通过 AJAX 动态呈现?

使用

$(document).on("click", ".remove_weight_button", function(){

而不是

$(".remove_weight_button").click(function(){

【讨论】:

  • 啊当然,是的,你是对的,它是由 ajax 加载的。以上如何解决这个问题?
  • @user2803072 您使用的“.click”事件仅查找在初始页面加载期间绘制的元素。 "on" 事件查找页面当前状态的元素
  • 或者$(".remove_weight_button").live("click", function() { ... 如果页面是动态加载的并且您使用的是 older 版本的 jQuery。关键是 click 没有注意到你提到的动态加载的 DOM 元素。
  • 这个解决方案救了我.. 我尝试了 1 个小时来使用 JQuery 触发一个事件,但无法做到。
  • @Mike.MKrallaProductions 您对父/子关系感到困惑。 document 是上例中的父元素。它可以是封装.remove_weight_button 的任何元素。