JQuery On () «нажмите» работает на все? - PullRequest
0 голосов
/ 03 декабря 2018

Здравствуйте, у меня есть проблема, которая сводит меня с ума :( не могу понять, почему

вот мой HTML и Усы

<section id="slideShow">
    <script id="slideShow-template" type="text/template">
        <ul>
            {{#slideShow}}
            <li class="{{{class}}}">
                <img src="{{{img}}}" alt="{{{title}}}">
                <a href="{{{link}}}">
                    <h1 class="slideShowTitle">{{title}}</h1>
                    <p class="slideShowDate">{{date}}</p>
                    <p class="slideShowDetail">{{detail}}</p>
                </a>
            </li>
            {{/slideShow}}
        </ul>
        <nav>
            {{#slideShow}}
                <a href="javascript:;"></a>
            {{/slideShow}}
        </nav>
        <a href="javscript:void(0)" class="prevSlide"></a>
        <a href="javscript:void(0)" class="nextSlide"></a>

    </script>
</section>

, а вот JS

(function() {

    var slideShow = {
        slideShow: [
        ],

        init: function() {
            this.cacheDom();
            this.bindEvents();
            this.render();
        },

        bindEvents: function() {
            this.$el.on('click', this.$next, function(){
                alert('sdsd')
            })
        },

        render: function() {
            var data = {
                slideShow: this.slideShow
            };
            this.$el.html(Mustache.render(this.template, data));
        },

        cacheDom: function() {
            this.$el = $('#slideShow');
            this.$ul = this.$el.find('ul');
            this.$li = this.$ul.find('li');
            this.$nav = this.$el.find('nav');
            this.$a = this.$nav.find('a');
            this.$next = this.$el.find('.nextSlide');
            this.$prev = this.$el.find('.prevSlide');
            this.template = $('#slideShow-template').html();
        }

    };

    slideShow.init();

})();

как вы видите с помощью bindEvents (), я пытаюсь связать функцию щелчка с динамически генерируемым тегом .nextSlide, но она работает со всем родителем (#slideShow), чего мне не хватает?

СКРИПКА

1 Ответ

0 голосов
/ 03 декабря 2018

Измените это:

    this.$el.on('click', this.$next, function(){
        alert('sdsd')
    })

на это:

    this.$el.on('click', '.nextSlide', function(){
        alert('sdsd')
    })
...