修改多个元素的<video>行为

时间:2018-03-06 10:55:02

标签: jquery video html5-video

打击jQuery用于为元素创建简单控件。但是,如果我在一个页面上有多个标签,则脚本会影响所有标签,而不仅仅是单击的标签。

如何修改以下内容以仅影响该特定实例?

由于

    // Play/Pause button functionality
    // On click
    $('.video .icon').click(function() {
        if ($('.video video').hasClass('is-playing')) {
            // Add class to style controls
            $('.video video').removeClass().addClass('is-paused');
            // Pause video
            $('.video video')[0].pause();
        } else {
            // Add class to style controls
            $('.video video').removeClass().addClass('is-playing');
            // Play video
            $('.video video')[0].play();
        }
        return false;
    });
    // On touchstart
    $('.video .icon').on('touchstart', function() {
        $('.video video')[0].play();
        return false;
    });

1 个答案:

答案 0 :(得分:0)

为了仅定位当前与之互动的元素,我们只需将$('.video video')替换为$(this).parent().find('video')即可。实际上,这会查找.icon的父级,然后在此搜索中查找任何<video>个元素。

// Play/Pause button functionality
// On click
$('.video .icon').click(function() {
    if ($(this).parent().find('video').hasClass('is-playing')) {
        // Add class to style controls
        $(this).parent().find('video').removeClass().addClass('is-paused');
        // Pause video
        $(this).parent().find('video')[0].pause();
    } else {
        // Add class to style controls
        $(this).parent().find('video').removeClass().addClass('is-playing');
        // Play video
        $(this).parent().find('video')[0].play();
    }
    return false;
});
// On touchstart
$('.video .icon').on('touchstart', function() {
    $(this).parent().find('video')[0].play();
    return false;
});