2014-10-22 1 views
1

Я в тупике с этим и буду очень признателен за чью-то помощь.если инструкция в рамках разрывов функций javascript

Я настраиваю highslide для интеграции с wordpress. Через следующий код в файле highslide.config.js я добавляю имя класса к определенным элементам и передавая разные атрибуты через вызов onClick в зависимости от определенных условий.

Все работает, пока я не добавить следующий код:

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

Когда приведенный выше код присутствует, не только, что один оператор не выполнять, но все это перестает работать. Даже если оператор if является чем-то вроде if (1 = 1) {}; он все еще ломается.

Если у меня вместо этого просто слайд-шоуGroup: 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 
 
        }; 
 
       }); 
 
      }; 
 
     }); 
 
    }; 
 
    
 
});

Спасибо заранее.

+0

добавленный код не будет анализировать ... это недопустимый синтаксис. что ':' должно быть '=' или что-то. Я не уверен, что цель здесь. –

+1

Вы имели в виду 'slideshowGroup = this.parentNode.parentNode.parentNode.id' –

+0

Что такое слайд-шоуГруппа? Вы не можете назначить переменную с помощью:: этот тип назначения используется внутри объектного литерала, например, {key: valye} –

ответ

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 
     } : {}); 
    }; 
}); 
+0

Хорошо, обе эти работы. Спасибо! Я не совсем уверен, как работает первый. Объявив var obj = {}; кажется, что вы создаете объект, а затем в выражении if вы, кажется, добавляете атрибут (slideshowGroup) вместе со значением для него. Предполагая, что это правильно, часть, которая меня смущает, заключается в том, что вы передаете весь объект в качестве параметра hs.expand, когда я думаю, что он ищет просто значение obj.slideshow. Как извлекаются правильные данные из объекта obj? – fbb

+0

Также (поскольку мы ограничены здесь символами): Ваш второй вариант - это сокращение, если утверждение, правильно? Я бы подумал, что это будет связано с той же проблемой, что и стандартная инструкция if. Можете ли вы объяснить, почему это работает, в то время как регулярное утверждение if не работает? – fbb

0

Я думаю, что вы можете захотеть этого, на основе другого кода:

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^