if函数中的语句会破坏javascript

时间:2014-10-22 03:44:47

标签: javascript jquery wordpress highslide

我很难过这个,真的很感激别人的帮助。

我定制了高压滑块以与wordpress集成。通过highslide.config.js文件中的以下代码,我可以为某些元素添加类名,并根据特定条件通过onClick调用传递不同的属性。

一切正常,直到我添加以下代码:



if(hsGroupByWpGallery){
    slideshowGroup: this.parentNode.parentNode.parentNode.id
};




当存在上述代码时,不仅一个语句不执行,而且整个过程停止工作。即使if语句类似于if(1 = 1){};它仍然破裂。

如果我只是简单地幻灯片组:this.parentNode.parentNode.parentNode.id或者什么都没有(我正在寻找的两个选项),两者都做我期望的事情。我只需要一个if语句来切换它们。

以下是相关代码:



jQuery(document).ready(function() {
  
  var hsCustomGalleryGroupClass = 'fbbHighslide_GalleryGroup';
  var hsCustomGalleryGroupChecker = 0;
  var hsGroupByWpGallery = true;


    jQuery('.' + hsCustomGalleryGroupClass).each(function(){
        hsCustomGalleryGroupChecker++;
        return false;
    });
    if (hsCustomGalleryGroupChecker > 0){
        jQuery('.' + hsCustomGalleryGroupClass).each(function(i, $item) {
            var grpID = $item.id;
            jQuery('#' + grpID + ' .gallery-item a').addClass('highslide').each(function() {
                this.onclick = function() {
                    return hs.expand(this, {
                        slideshowGroup: grpID
                    });
                };
            });
        });
    } else {
        jQuery('.gallery-item a').addClass('highslide').each(function() {
            this.onclick = function() {
                return hs.expand(this, {
                    // This is the problem if statement
                    if(hsGroupByWpGallery){
                      slideshowGroup: this.parentNode.parentNode.parentNode.id
                    };
                });
            };
        });
    };
  
});




提前致谢。

2 个答案:

答案 0 :(得分:2)

问题是你正在尝试分配条件属性..你不能在对象定义中有if条件

jQuery('.gallery-item a').addClass('highslide').each(function () {
    this.onclick = function () {
        var obj = {};
        //assign the property only if the condition is tru
        if (hsGroupByWpGallery) {
            obj.slideshowGroup = this.parentNode.parentNode.parentNode.id;
        }
        return hs.expand(this, obj);
    };
});

另一种方法是

jQuery('.gallery-item a').addClass('highslide').each(function () {
    this.onclick = function () {
        //if the flag is true sent an object with the property else an empty object
        return hs.expand(this, hsGroupByWpGallery ? {
            slideshowGroup: this.parentNode.parentNode.parentNode.id
        } : {});
    };
});

答案 1 :(得分:0)

我想你可能想要这个,基于其他代码:

   jQuery('.gallery-item a').addClass('highslide').each(function() {
      this.onclick = function() {

         if(hsGroupByWpGallery){
            return hs.expand(this, {
               slideshowGroup: this.parentNode.parentNode.parentNode.id
            });
          }
       };
   });