值只更新一次,我的jquery代码有什么问题?
我有一个表,其中用户单击图像以阻止/取消阻止用户。是这样的 当我使用jquery数据表插件时,表的html(包括block/unblock列)是通过AJAX检索的 以下是为列block/unblock检索到的html值只更新一次,我的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">
<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>