首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery函数-难以理解的行为

jQuery函数-难以理解的行为
EN

Stack Overflow用户
提问于 2011-08-13 14:32:40
回答 1查看 104关注 0票数 0

请看我的脚本:实例化

我注意到了一种莫名其妙的行为。

'All' 有3个选项可见--但是当您切换到 'logo' 并返回到 'all' 时,我们有4.

为什么?第一个选项卡中也应该有4个项。

脚本是如何工作的:

  • onload -我定义了我们的var filterClass = "all";,这意味着只显示带有'all'类的li
  • 当您在顶部菜单前面选择某项时-它接受它的类,并找到具有相同类的li ('li‘有多个类)
  • 在每次更改时,我们都运行CreateTabs函数,它基本上检查我们有多少个'li‘,并在制表符中(每个选项卡上有4个)。

控制类的Onload classes:

代码语言:javascript
复制
$('#portfolio-items li').CreateTabs();   
var filterClass = "all";

$('.portfolio-filter li a').click(function() {


    $('.portfolio-filter > .selected').prop('class', '');
    $(this).parent('li').addClass('selected');

    filterClass = $(this).attr('class');

    $('#portfolio-items li').hide();
    $('#portfolio-items li.' + filterClass).show();
    $('#portfolio-items').CreateTabs(filterClass);

});

CreateTabs脚本:

代码语言:javascript
复制
(function($) {

$.fn.CreateTabs = function(filterClass) {

    var CoundNumberOfDivs = $('#portfolio-items li:visible').length;
    $('.pagination li a').hide();
    if (CoundNumberOfDivs <= 4) {
        return false;
    }
    else {
        var num = Math.ceil(CoundNumberOfDivs / 4);
        $('.pagination li a:lt(' + num + ')').show();
        $('#portfolio-items li').hide();
        if (filterClass === undefined) {
            $('#portfolio-items li:lt(4)').show();
        } else {
            $('#portfolio-items li.' + filterClass + ':lt(4)').show();
        }
    }

};
})(jQuery);

Onload脚本,它控制制表符

代码语言:javascript
复制
$('ul.pagination li a').click(function(event) {
    $('ul.pagination li .active').removeClass('active');
    $(this).addClass('active');

    var PI = $('#portfolio-items li' + (filterClass !== undefined) ? '.' + filterClass : '');
    $('#portfolio-items li').hide();


    if ($(this).hasClass('href-1')) {
        PI.slice(0, 4).show();
    }
    else if ($(this).hasClass('href-2')) {

        PI.slice(4, 8).show();
    }
    else if ($(this).hasClass('href-3')) {
        PI.slice(8, 12).show();
    }
    else if ($(this).hasClass('href-4')) {
        PI.slice(12, 16).show();
    }
    else if ($(this).hasClass('href-5')) {
        PI.slice(16, 20).show();
    }
    else if ($(this).hasClass('href-6')) {
        PI.slice(20, 24).show();
    }
    else if ($(this).hasClass('href-7')) {
        PI.slice(24, 28).show();
    }
    else if ($(this).hasClass('href-8')) {
        PI.slice(28, 32).show();
    }
    else if ($(this).hasClass('href-9')) {
        PI.slice(32, 36).show();
    }
    event.preventDefault();
}).filter(':first').click();
EN

回答 1

Stack Overflow用户

发布于 2011-08-13 14:48:20

您有括号问题,这应该适用于您:

代码语言:javascript
复制
var PI = $('#portfolio-items li' + ((filterClass !== undefined) ? ('.' + filterClass) : ''));

您以前得到了选择器.all,它甚至选择了选项卡,并扰乱了数组索引,如下所示:

代码语言:javascript
复制
var filterClass = "all";
var selector = '#portfolio-items li' + (filterClass !== undefined) ? '.' + filterClass : ''
console.log(selector); //prints ".all", which is clearly not the selector you are going for

好的衡量标准:http://jsfiddle.net/DmFmM/60/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7051046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档