2011-02-04 3 views
3

У меня есть куча фотографий, и я ищу лучший способ показать их в одном месте с помощью jQuery.Моя демонстрация jQuery - проблема непрозрачности :)

Что вы думаете о моей концепции? Действительно ли это или, может быть, есть другие способы, чем положить все изображения друг на друга и играть с непрозрачностью?

В любом случае я не знаю, почему этот код:

JQuery ('# демо IMG . + ItemClass) .animate ({Непрозрачность: 1});

Не показывает ничего. Любая помощь?

http://jsfiddle.net/d4sEW/1/

+0

Я думаю, что JQuery не является объектом (не должна быть '$ ('# демо IMG .'...)'?) – JCOC611

+0

@ JCOC611: это , – yoda

ответ

3

I'm довольно уверен, что имена классов не могу начать с числом, но даже в этом случае, если изображение имеет определенный класс, вы должны использовать img.'+itemClass вместо img .'+itemClass; вы помещаете пробел между селектором img и классом.

Кроме того, вам нужно будет удалить/убрать изображения, которые вы не хотите показывать, поскольку в противном случае одно изображение может отображаться за изображением, которое вы не хотите показывать.

2

Хорошо это то, что я сделал для того, чтобы работать:

  • Удалить пространство здесь: jQuery('#demo img .'+itemClass) к jQuery('#demo img.'+itemClass)
  • Я также рекомендовал бы скрыть изображения, прежде чем показывать нужный номер (если вы выбираете изображение, скажем, № 3, а затем снова выберите первое изображение, оно не будет отображаться с третьего конца)
+0

Нет необходимости менять jQuery на $; Код в порядке. –

+0

Я не знал этого, я привык видеть '$'. Кроме того, код меньше; таким образом, загружается быстрее. – JCOC611

+0

@ JC0C611: Возможно, OP не может использовать $ для вызова функций jQuery из-за другой библиотеки.Кроме того, вопрос не связан с увеличением производительности кода. Кроме того, первая точка маркера подразумевает, что изменение необходимо, чтобы заставить его работать, что не так. –

1

Правильно несколько проблем.

Обновлено: http://jsfiddle.net/d4sEW/7/

  • .attr('class') - это неправильно, нет класса атрибута, это .attr('className')
  • вам нужно переключить другие непрозрачности 0, в противном случае в зависимости от того находится на вершине стека будет отображаться
  • Если вы хотите, чтобы это выглядело правильно, вам нужно либо тщательно выбрать, какие изображения будут исчезать и выходить, либо выцветать из партии до замирания, как показано в демо
  • также, вам необходимо закрытьПространство между img и классом, в противном случае это выглядит для класса как потомок изображения, а не часть его: $('img.class')
1

Вы имеете опечатки (без пробела) между IMG и itemClass. он должен выглядеть следующим образом:

jQuery('#navi a').click(function(){ 
    var itemClass = jQuery(this).attr('class'); 
    $('#demo img').animate({opacity:0}); 
    jQuery('#demo img.'+itemClass).animate({opacity: 1}); 
    //alert(itemClass); 
}); 
Смежные вопросы