2011-09-05 82 views
0

我有两个不同ID的图像,可以说#pic1和#pic2。我尝试将两个选择器添加到切换,但它们都独立地切换相同的元素,因此,当您单击第一张图片,然后单击第二张图片时,第二张图片不会切换目标div,它会再次执行切换的第一部分。例如,如果它应该向左滑动100px,然后向右滑动100px,单击#pic1会将其向左滑动100px,但单击#pic2会将其向左滑动100px再次向左移动。有人能给我一个关于我应该看什么方向的想法吗?jquery切换多选择器

$('#pic1,#pic2').toggle(
function() 
{ 
    $('#mylayer').delay(1000).animate({left: "+=100"}); 
    $('#overlay').animate({opacity: 0.8}); 
}, 
function() 
{ 
    $('#mylayer').animate({left: "-=100"}); 
    $('#overlay').delay(1000).animate({opacity: 0}); 
}); 
+0

这是因为切入和切出功能总是分配给每个生成元素。切换()似乎不适合您的useCase。 – HBublitz

+0

向两者添加一个类并将其用作选择器? – benhowdle89

回答

0

尝试这样的事情,对于这两种点击保持打开/关闭状态的跟踪一次,使用jQuery的数据能力,避免使用全局变量,以使这更可扩展到使用多个地方:

$('#pic1,#pic2').click() { 
    var mylayer = $("#mylayer"); 
    var open = mylayer.data("open"); 
    if (open) { 
     mylayer.animate({left: "-=100"}); 
     $('#overlay').delay(1000).animate({opacity: 0}); 
     mylayer.data("open", false); 
    } else { 
     mylayer.delay(1000).animate({left: "+=100"}); 
     $('#overlay').animate({opacity: 0.8}); 
     mylayer.data("open", true); 
    } 
} 
+0

谢谢!!!我不得不做一些调整,但这正是我所需要的。我之前通过绑定未绑定的点击处理程序完成了这样的操作,但它笨重,而且非常轻巧! – ska77