javascript - Jquery 更改类单击不起作用

标签 javascript jquery

我有那些点击更改类(class)时使用的代码

$(document).ready(function(){
    $("div.add").click(function(e){
    $.ajax({url: "?action=add&postid=" + $(this).parents('div.box').first().attr("id")})
    $(this).removeClass('add').addClass('remove');
    });
});
$(document).ready(function(){
    $("div.remove").click(function(e){
    $.ajax({url: "?action=remove&postid=" + $(this).parents('div.box').first().attr("id")})
    $(this).removeClass('remove').addClass('add');
    });
});

当我第一次单击时,div 类从 <div class="add"> 更改至 <div class="remove">并且 ajax url 有效,但是当我从更改后的类中再次单击时,没有任何反应。 (它不会变回添加类)

最佳答案

如果在附加事件处理程序时要监听事件的元素尚不存在,则最好使用 .on 方法附加事件处理程序。在您的情况下,您可以这样做:

$(document).on('click', '.add', function() { ... });
$(document).on('click', '.remove', function() { ... });

这称为事件委托(delegate),它(以我自己的理解)将事件处理程序附加到 DOM 树上方的元素,一旦页面加载,该元素肯定存在。事件将在 DOM 树中向上冒泡(除非被阻止),执行它们经过的元素中的所有事件处理程序。

关于javascript - Jquery 更改类单击不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25222638/

相关文章:

javascript - 始终将 li 项目置于顶部

javascript - 如何延迟选择选项生成

javascript - 如何使用正则表达式从 javascript 中的日期字符串中删除时间戳

javascript - 使用 jQuery 允许按钮点击提交

javascript - 如何防止查询字符串值可见

javascript - 如何使用键盘箭头键移动 Bootstrap 模式弹出窗口

javascript - 鼠标悬停时内容淡入,鼠标移出时隐藏

javascript - 将 ko.observableArray<string>([]) 绑定(bind)到 <select>

javascript - 无法使用 jQuery 更改背景颜色

javascript - 无法理解 React setState 签名 "setState(updater[, callback])"