javascript - jQuery if else 语句和 data()

标签 javascript jquery if-statement

我为此苦苦挣扎了将近 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。

http://jsfiddle.net/Fe678/

当您点击“缩略图”时,它应该会触发一个警报(“数据正在测试”或“数据未测试”)。

当我在我的 WordPress 页面(本地主机)上尝试完全相同的代码时,它依次显示两个警报 - “数据未设置”,然后是“数据已设置” - 是什么导致了这种奇怪的行为?

很遗憾,我无法提供来源。我希望这是常见的事情,也许一些 jQuery 向导会知道答案?不知何故……?

最佳答案

我不认为这是一个 jQuery 错误,而是以下之一:

  • 您的 WordPress 模板最终会导致代码被包含两次。要对此进行调试,请在调用 .bind() 之前发出警报并确认您只看到一次。
  • 出于某种原因,在您的 WordPress 版本中,您实际上有两个重叠的“.thumbnail”类对象,并且“单击”会触发这两个对象。如果您在 jsfiddle 上用额外的
    包装您的缩略图之一,您将看到这是如何发生的。要对此进行调试,请放入一个警告框,显示正在调用该方法的对象,并验证那里没有两个单独的对象。

关于javascript - jQuery if else 语句和 data(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8145862/

相关文章:

javascript - 与其他函数一起返回变量

javascript - 如何调试 Chrome Javascript 中 GC 事件之间看似长时间的停顿

javascript - Bootstrap 不适用于 Iframe 中的 IE 6

ios - 使用较短的 if 语句时,表达式不可分配错误

javascript - react 映射返回的对象错误作为 react 子项无效

javascript - 我需要帮助找到同步 jQuery ajax 的替代方法

javascript - Dropzone.js 和 ajax

javascript - 在所有旋转完成后,如何停止我的 html 图像旋转?

performance - 德尔福性能: Case Versus If

java - 字符串的重复