值只更新一次,我的jquery代码有什么问题?

值只更新一次,我的jquery代码有什么问题?,jquery,ajax,Jquery,Ajax,我有一个表,其中用户单击图像以阻止/取消阻止用户。是这样的 当我使用jquery数据表插件时,表的html(包括block/unblock列)是通过AJAX检索的 以下是为列block/unblock检索到的html <td> <a class="toggle" href="#toggle"> <img src="app/css/images/tick.png" alt="Yes" data-id="4" data-block="0">

我有一个表,其中用户单击图像以阻止/取消阻止用户。是这样的

当我使用jquery数据表插件时,表的html(包括block/unblock列)是通过AJAX检索的

以下是为列block/unblock检索到的html

<td>
    <a class="toggle" href="#toggle">
        <img src="app/css/images/tick.png" alt="Yes" data-id="4" data-block="0">
    </a>
</td>
这是我正在使用的PHP代码

if(isset($_POST['id']) && isset($_POST['block'])) {
    $userId = $_POST['id'];
    //$_POST['blocks'] holds the current value of block/unblock.
    //toggle the block/unblock state.
    $block = $_POST['block'] == 1 ? 0 : 1;
    User::blockUser(array($userId), $block);
    //Respond back toggled block/unblock value.
    echo $block;
}
如果我单击图像切换状态,使
数据块
值得到更新,则一切正常,问题是我只能单击它一次,如果我再次单击同一图像,它不会做任何事情。我在控制台中检查了这些值,在第一次单击后,这些值也不会更新。代码有什么问题

更新:

这是第一阶段的HTML,即单击之前

<a class="toggle" href="#toggle">
    <img src="app/css/images/tick.png" alt="Yes" data-id="4" data-block="0">
</a>

以下是单击同一行后的HTML

<a class="toggle row_selected" href="#toggle">
    <img src="app/css/images/tock.png" alt="Yes" data-id="4" data-block="1">
</a>
//Here the extra class row_selected is added by default by another plugin, do you think this is creating the problem?

//这里选择的额外类行_是由另一个插件默认添加的,您认为这是造成问题的原因吗?
第一次点击后,它又出现了

<a class="toggle" href="#toggle">
    <img src="app/css/images/tock.png" alt="Yes" data-id="4" data-block="1">
</a>

jQuery有自己的数据实现:

您应该使用
.data('block',data)
而不是
.attr('data-block',data)
当您使用
$(this.find('img')。data('block')

此外,如果知道标记,则不应使用jQuery进行类检测,如
$('.toggle')

在您的示例中,您可以通过使用
$('a.toggle')

轻松提高性能。您是否检查了第二个img是否接收到相同的类
toggle
?当然,谢谢@ghommy,我已经更新了我的代码,请查看,这不会有问题,因为它必须在单击时切换当前状态,即如果值为0,则将其更改为1,反之亦然。我试过那个代码,如果我这么做了,它根本就不会更新。我明白了。使用jQuery数据方法作为setter.wooow,非常感谢,这是我应该使用的错误。
data()
而不是
.attr()
,它现在可以工作了,再次感谢@Ghommeyit,但是当我看到控制台时,
数据块
值只有在刷新后才会更新,但是数据库和图像中的值会得到更新。是的,正如我之前所说,jQuery有自己的数据实现。因此,您可以使用
.data('abc',{a:1})
存储数组和对象。在dom中看不到任何更改。
<a class="toggle" href="#toggle">
    <img src="app/css/images/tock.png" alt="Yes" data-id="4" data-block="1">
</a>