我为此苦苦挣扎了将近 5 个小时,终于找到了线索。
这是我在我的网站上使用的代码:
jQuery(document).ready(function(){
jQuery(".thumbnail").bind("click",function(){
var elem = jQuery(this);
if((elem).data('test')) {
alert('data is test');
elem.data('test',false);
}
else {
alert('data is not test');
elem.data('test',true);
}
});
});
这是 jfiddle。
当您点击“缩略图”时,它应该会触发一个警报(“数据正在测试”或“数据未测试”)。
当我在我的 WordPress 页面(本地主机)上尝试完全相同的代码时,它依次显示两个警报 - “数据未设置”,然后是“数据已设置” - 是什么导致了这种奇怪的行为?
很遗憾,我无法提供来源。我希望这是常见的事情,也许一些 jQuery 向导会知道答案?不知何故……?
最佳答案
我不认为这是一个 jQuery 错误,而是以下之一:
- 您的 WordPress 模板最终会导致代码被包含两次。要对此进行调试,请在调用 .bind() 之前发出警报并确认您只看到一次。
- 出于某种原因,在您的 WordPress 版本中,您实际上有两个重叠的“.thumbnail”类对象,并且“单击”会触发这两个对象。如果您在 jsfiddle 上用额外的 包装您的缩略图之一,您将看到这是如何发生的。要对此进行调试,请放入一个警告框,显示正在调用该方法的对象,并验证那里没有两个单独的对象。
关于javascript - jQuery if else 语句和 data(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8145862/