jQuery нажмите, чтобы загрузить видео / изменить миниатюру, не работает

bigideahelm

Я работаю над этой интеграцией Vimeo. Я пытаюсь заменить видео, когда вы нажимаете на определенную миниатюру. Использование быстрого и грязного метода замены классов с помощью addClass и removeClass. Также замена видео с помощью функции html.

Пытаюсь сделать это без перезагрузки страницы. Похоже, что html обновляется, но видео не обновляются должным образом. У кого-нибудь есть мысли?

Вот HTML:

    <div class="thumbnails">
        <div class="jake"><img style="display:inline; position: relative;" src="wp-content/themes/skeleton/images/jake.jpg" /></div>
        <div class="katy"><img style="display:inline; position: relative;" src="wp-content/themes/skeleton/images/katy.jpg" /></div>
        <div class="cary"><img style="display:inline; position: relative;" src="wp-content/themes/skeleton/images/cary.jpg" /></div>
    </div>

И код jQuery (я включил только один раздел кода, он повторяется для каждой миниатюры видео):

//CARY
jQuery(".cary").click(function(){
  jQuery('#videoplayer').html('<iframe src="http://player.vimeo.com/video/57695418?api=1" width="470" height="264" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>');

  if(!(jQuery('div').hasClass('jake'))) {
    jQuery('.cary').html('<img style="display:inline; position: relative;" src="wp-content/themes/skeleton/images/jake.jpg" />');
    jQuery('.cary').addClass('jake');
    jQuery('.jake').removeClass('cary');
  }

  if(!(jQuery('div').hasClass('katy'))) {
    jQuery('.cary').html('<img style="display:inline; position: relative;" src="wp-content/themes/skeleton/images/katy.jpg" />');
    jQuery('.cary').addClass('katy');
    jQuery('.katy').removeClass('cary');
  }

  if(!(jQuery('div').hasClass('roderick'))) {
    jQuery('.cary').html('<img style="display:inline; position: relative;" src="wp-content/themes/skeleton/images/roderick.jpg" />');
    jQuery('.cary').addClass('roderick');
    jQuery('.roderick').removeClass('cary');
  }
});

person Dave Rottino    schedule 21.01.2013    source источник
comment
Что вы имеете в виду, что видео не обновляются должным образом? Вы понимаете, что jQuery('div') выбирает все элементы div, верно?   -  person Explosion Pills    schedule 21.01.2013
comment
Видео, показываемое в данный момент, не имеет миниатюры. Я использую .hasClass(ClassName) для поиска того, какой из них находится в окне видеоплеера. Это быстрое и грязное решение, но оно работает. Взгляните на ссылку и прокрутите вниз до видеоплеера, чтобы увидеть, о чем я говорю. Нажмите на несколько видео, и вы увидите проблему.   -  person Dave Rottino    schedule 21.01.2013
comment
Вместо использования .hasClass я думаю, вы хотите использовать $(this).hasClass. .hasClass всегда будет возвращать true, потому что проверяется каждый элемент div, и это не будет работать так, как вы ожидаете.   -  person Explosion Pills    schedule 21.01.2013
comment
Кажется, это работает, потому что это только один из этого класса на странице. Спасибо за помощь, но я решил свою проблему. Использование функции on, похоже, обновляет DOM в соответствии с ней, и теперь все работает, как задумано.   -  person Dave Rottino    schedule 21.01.2013


Ответы (1)


Использование функции on, похоже, обновляет DOM в соответствии с ней, и теперь все работает, как задумано. Я пытался изменить элементы на странице, а не показывать/скрывать уже загруженные элементы.

person Dave Rottino    schedule 21.01.2013