jQuery if else语句和数据()

时间:2011-11-16 02:22:39

标签: 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页面(localhost)上尝试相同的确切代码时,它会一个接一个地显示两个警告 - “数据未设置”然后“数据已设置” - 这可能会导致这种奇怪的行为?

不幸的是我无法提供来源。我希望这是常见的,也许一些jQuery向导会知道答案吗?不知何故...?

1 个答案:

答案 0 :(得分:1)

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

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