类没有在DOM中更新,处理程序无法正常工作

时间:2017-02-21 00:00:22

标签: php jquery

所以,我不确定这是否是正确的方法,但我听说使用内联onclick处理程序而不是jquery处理程序并不是一个好主意。

我有一个用户控制台,带有一个阻止/取消阻止用户的按钮。这是我用来阻止它们的方法:

<script>
    $('.fa-unlock-alt').parent().on('click', function () {
        var $button = $(this)
        var id = $button.attr('id').slice(12);
        console.log($(this));


        $.ajax({
            method: 'POST',
            url: '/Websites/TimeTracking/Resources/PHP/Users/blockUser.php',
            data: {idUser: id, status: 'Inactivo'},
            success: function (result) {
                if (result == "Exito") {
                    alert("El acceso del usuario ha sido bloqueado!");
                    $button.find('i').toggleClass('fa-unlock-alt fa-lock');
                    $button.removeClass('btn-outline-success').addClass('btn-outline-danger');
                }
                console.log(result);
            },
            error: function (exception) {
                alert("No se pudo bloquear el acceso!");
                console.log(exception);
            }
        })
    })
</script>

我有类似的功能,但是它会查找.fa-lock而不是fa-unlock-alt,它会执行类似的操作,但要解锁而不是锁定。

一旦DOM加载,第一次单击按钮就可以正常工作,ajax调用成功,我的数据库相应更新,类更改为假设,但每当我再次点击它时,它赢了不行。

快速调试显示,即使浏览器显示我想要的颜色和形状,DOM实际上也是在元素属性上注册的默认值。

我应该采取不同的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

也许你应该在父元素(delegate)上注册点击处理程序。像

这样的东西
px