使用:不是带有jquery变量的选择器

时间:2014-03-10 19:00:29

标签: jquery css

查看jQuery selector with variable in the selector后 还有其他一些帖子,我没有找到我的问题的答案,这让我想到也许我可能会做错了。

我有一个.car_ul li元素作为'el'传递,

我正在尝试使用$('.car_ul:not(:animated)')$(':not(:animated)',adult)进行操作 - 想知道我该怎么做?

slideLeft: function(el) {

                var adult = el.parent.attr('class')
                var itemWidth = el.outerWidth() + 10
                var leftIndent = parseInt(adult.css('left')) + itemWidth


        $('.car_ul:not(:animated)').animate({'left' : leftIndent}, 500,
                        function() {
                            $('.car_ul li:first').before($('.car_ul li:last'))
                            $(adult).css({'left':'-160px'})
                        })

            },

1 个答案:

答案 0 :(得分:1)

由于您询问了可能的优化点:

slideLeft:function($el){
    var $adult = $('.'+$el.get(0).parentNode.className),
        itemWidth = $el.outerWidth() + 10,
        leftIndent = parseInt($adult.css('left'),10),
        $menu = $('.car_ul'),
        $li = $menu.find('li');

    $menu.not(':animated').animate({left:leftIndent},500,function(){
        $li.first().before($li.last());
        $adult.css({left:-160});
    });
},
  • 因为你真的需要adult对象,所以在变量中捕获它作为对象
  • 将{10}用于parseInt功能(始终执行此操作)
  • 缓存.car_ul及其各自的li
  • 使用.not()方法来利用.car_ul
  • 的缓存
  • 使用.first().last()方法来利用li
  • 的缓存
  • 使用DOM名称和数值而不是CSS分配的字符串值

我还将您的el变量重命名为$el ...这更具风格,但通常认为最佳做法是使用命名约定调用jQuery对象与DOM元素。

希望这有帮助!