查看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'})
})
},
答案 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
对象,所以在变量中捕获它作为对象parseInt
功能(始终执行此操作).car_ul
及其各自的li
.not()
方法来利用.car_ul
.first()
和.last()
方法来利用li
我还将您的el
变量重命名为$el
...这更具风格,但通常认为最佳做法是使用命名约定调用jQuery对象与DOM元素。
希望这有帮助!