【问题标题】:jQuery pagination and counting certain divsjQuery分页和计算某些div
【发布时间】:2016-11-25 16:40:53
【问题描述】:

我在使用一些 JS 代码来检查用户选择了哪些产品来相互衡量时遇到了一些问题。

我们用函数 .length 计算类 'measure-active' 并且一切正常,但是最近我们以 jQuery 的形式引入了分页和过滤器,因为这破坏了能够相互测量产品的函数当您点击另一个页面或过滤时,产品会重新加载,而您之前点击测量的产品现在不再“活跃”。

这是我们的代码:

var linkstart = '/';
var link1 = '';
var link2 = '';
var first;
var second;
var check;
$('input[class="measure-button"]').on('change', function (e) {
    var active = $('input.measure-active').length;
    if($(this).hasClass('measure-active')) { 
        $('input[class="measure-button"]').attr('disabled', false);
        $(this).removeClass('measure-active');
        $('#measure-button').addClass('measure-button-disabled');
        $('#measure-button').attr('href', '#');
        $('#measure-button-two').addClass('measure-button-disabled');
        $('#measure-button-two').attr('href', '#');
        $('.measure-activate').removeClass('shown');
        $('.measure-block').removeClass('measure-inactive');
        //check if this is the first product highlighted, if so do below
        if($(this).data('name') === first) {
            link1 = link2;
            check = 1;
        } else {
            check = 0;
        }
    }
    else if(active == 1) {
        $('input[class="measure-button"]').attr('disabled', true);
        $(this).attr('disabled', false);
        $(this).toggleClass('measure-active');
        $('#measure-button').removeClass('measure-button-disabled');
        $('#measure-button-two').removeClass('measure-button-disabled');
        $('.measure-activate').addClass('shown');
        link2 = $(this).data('company')+'/'+$(this).data('name');
        $('#measure-button').attr('href', linkstart+link1+'/versus/'+link2);
        $('#measure-button-two').attr('href', linkstart+link1+'/versus/'+link2);
        //first = second
        if(check == 1) {
            first = second;
        }
        second = $(this).data('name');
        //dim all other products
        $('.measure-block').addClass('measure-inactive');
    } else if(active != 2) {
        $(this).toggleClass('measure-active');
        $('#measure-button').addClass('measure-button-disabled');
        $('#measure-button-two').addClass('measure-button-disabled');
        $('.measure-activate').removeClass('shown');
        link1 = $(this).data('company')+'/'+$(this).data('name');
        $('#measure-button').attr('href', '#');
        $('#measure-button-two').attr('href', '#');
        first = $(this).data('name');
        $('.measure-block').removeClass('measure-inactive');
    }
    else {
        $(this).removeClass('measure-active');
    }
});

关于如何规避这个问题的任何想法?

【问题讨论】:

    标签: javascript jquery pagination


    【解决方案1】:

    我通过更改解决了这个问题:

    $('input[class="measure-button"]').on('change', function (e) {
    

    $('body').on('change', 'input[class="measure-button"]', function (e) {
    

    而不是用 .length 计数,只需添加一个变量,每次单击测量按钮时计数。

    【讨论】:

      猜你喜欢
      • 2011-02-20
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      • 1970-01-01
      • 2011-08-02
      • 2018-03-04
      相关资源
      最近更新 更多