在click方法中绑定事件

wow*_*uzz 2 javascript jquery

我之前被告知我不应该在函数内部绑定事件.什么是解决当前问题的最佳选择?我点击链接,从该链接我想获得一些属性.这是我目前正在做的事情.

$(".portfolioLink").click(function(){

            // Show slide and portfolio piece info
            $(".inner-content.portfolio").show();

            // Reset slides timer and pagination
            clearInterval($('#slides').data('interval'));
            $("ul.pagination li").removeClass("current");

            // Get ID from link that is clicked.
            var slideID = $(this).parent().attr("id");

            $("#previous").click(function() {
                slideID--;
                clearInterval($('#slides').data('interval'));
                $("ul.pagination li").removeClass("current");
                portfolioSwitch(slideID);
            });

            $("#next").click(function() {
                slideID++;
                clearInterval($('#slides').data('interval'));
                $("ul.pagination li").removeClass("current");
                portfolioSwitch(slideID);
            });
}
Run Code Online (Sandbox Code Playgroud)

我有两个来回的按钮,它们是下一个和前一个按钮.根据我点击的链接,我想前进或后退.将这些点击事件置于$(".portfolioLink")click事件之外并同时从投资组合链接获取这些属性的最佳方法是什么?

ade*_*neo 6

将点击事件绑定到另一个点击事件中意味着每次.portfolioLink点击a时,新的点击功能被绑定到#previous/#next按钮,因此如果.portfolioLink点击两次则增加两次,如果点击三次则增加三次等等.你可以使用更高范围内的变量来解决问题,如下所示:

var slideID = 0;

$(".portfolioLink").click(function() {
    $(".inner-content.portfolio").show();

    clearInterval($('#slides').data('interval'));
    $("ul.pagination li").removeClass("current");

    slideID = $(this).parent().attr("id");
}

$("#previous, #next").click(function() {
    slideID = this.id=='next' ? slideID+1 : slideID-1;
    clearInterval($('#slides').data('interval'));
    $("ul.pagination li").removeClass("current");
    portfolioSwitch(slideID);
});
?
Run Code Online (Sandbox Code Playgroud)