Як я можу змінити відео-плакат, використовуючи jquery?

Я роблю роботу зі списку відео. У цьому є три посилання з трьома різними ідентифікаторами. Коли користувач натискає посилання, відео та плакат відео мають змінюватися. Поки я використовую свій код jquery, відео змінюється, але пристрій "attter" не змінюється ... будь-яка причина? Це мій код, який я використовую ...

відео HTML код:

Мій код jquery:

$('div.video-box-area img').click(function(){
    var nowSrc = $('video').attr('src');
    var change = nowSrc.replace(nowSrc.substr(12,1),$(this).parent().attr('id').substr(length-1));

    var poster = $('video').attr("poster");
    var posterChange = poster.replace(poster.substr(12,1),$(this).parent().attr('id').substr(length-1));

    $('video').attr("poster",posterChange);
    $('video').attr('src',change);

    return false;
});
2
До речі, поки це не відповідь, яку ви шукаєте, я б групував весь ваш атрибут, який читається перед обчисленням, включаючи $ (this) .parent (). Attr ('id'), який входить у ваші два розрахунки. Зараз обидва обчислення вимагають, щоб jQuery ходив по DOM, що сповільниться. Прочитайте ідентифікатор один раз, потім використовуйте його як потрібно. Крім того, оскільки ви не надали повну розбитку, нам неможливо допомогти налагодити це. Ми лише вгадуємо, що таке $ (this) .parent (). Attr ('id'). Це ускладнює відлагодження ваших замін-підрядка висловлювання.
додано Автор BenSwayne, джерело

3 Відповіді

Відповідно до характеристик відео HTML5 , плакат відображається , коли Немає відеоданих недоступні (атрибут readyState відео - HAVE_NOTHING або HAVE_METADATA, але відео дані ще не отримані взагалі, або атрибут readyState елемента - будь-яке наступне значення але у мультимедійному ресурсі немає відеоканалу). Коли відеозустріч призупинено, а поточна позиція відтворення - це перший кадр відео, елемент представляє або кадр відео, що відповідає поточній позиції відтворення або кадру плаката, залежить від браузерів.

За вашої обставини відео дані, ймовірно, доступні, тому плакат не відображається. Я можу допомогти вам дослідити цю проблему, якщо ви дасте мені демонстрацію у реальному часі.

2
додано

Я не думаю, що ви можете отримати доступ до атрибута безпосередньо, використовуючи тег.

Те, що я маю на увазі, - тег $ ('video') , мій досвід, який повинен повернути масив усіх тегів на сторінці, якщо ви зможете, ви повинні відповідати його id .

Якщо це не є можливістю, і ви абсолютно впевнені, що на сторінці є лише один тег відео, ви можете зробити щось подібне до $ ('video') [0] , але це не є правильним рішенням.

Can you post your entire code, including the <div class="video-box-area">?

1
додано

Я просто пробував кілька речей , і, як видається, ваші дзвінки jQuery в порядку. Єдине, що я бачу, - це те, що змінною posterChange є насправді posterValue == '' . Якщо рядок порожній, attr не буде змінено.

Зробіть сповіщення прямо після розрахунку змінної posterChange і подивіться, чи вона порожня ...

0
додано
URL-адреси плаката змінюються. але нічого не оновлюється, це питання ..!
додано Автор 3gwebtrain, джерело
будь ласка, складіть весь код. Я [намагався] [1] запустити ваш приклад частину вище (повинна мати можливість працювати автономно), але це завжди збій при ... var change = nowSrc.replace ... . [1]: jsfiddle.net/FNxZA/2
додано Автор g19fanatic, джерело