2014-02-25 60 views
1

我试过在jQuery中编程滑块。此滑块位于主页面的中心,但隐藏。当我点击一个特定的图像时,滑块转到可见并且滑块运行完美。当我点击“body”标签时,此滑块淡出。打开滑块jquery两次不工作

问题:当我在提到的图像上点击两次时,滑块出现1秒钟并立即消失。

“解决方案”是令人耳目一新的网页,但我不想这样做。

这是我的HTML代码:

<div id='slides'> 
      <ul> 
       <li><img src="./img/davidMerinas.png" title="David Merinas"/></li> 
       <li><img src="./img/davidMuñoz.png" title="David Muñoz"/></li> 
       <li><img src="./img/enriquePalacios.png" title="Enrique Palacios"/></li> 
       <li><img src="./img/fernandoHidalgo.png" title="Fenando Hidalgo"/></li> 
       <li><img src="./img/franAranda.png" title="Fran Aranda"/></li> 
       <li><img src="./img/ignacioAlvarez.png" title="Ignacio Alvarez"/></li> 
       <li><img src="./img/iknx.png" title="IKNX"/></li> 
       <li><img src="./img/javiSanchez.png" title="Javi Sanchez"/></li> 
       <li><img src="./img/juanMartos.png" title="Juan Martos"/></li> 
       <li><img src="./img/juanMolina.png" title="Juan Molina"/></li> 
       <li><img src="./img/juanRomero.png" title="Juan Romero"/></li> 
       <li><img src="./img/miguelArroyo.png" title="Miguel Arroyo"/></li> 
       <li><img src="./img/miguelLopez.png" title="Miguel Lopez"/></li> 
       <li><img src="./img/nicolasGarcia.png" title="Nico Garcia"/></li> 
       <li><img src="./img/rafaJurado.png" title="Rafa Jurado"/></li> 
       <li><img src="./img/sergioGomez.png" title="Sergio Gomez"/></li> 
      </ul> 
      <div class="clear"></div> 
     </div> 

这是我的jQuery函数:

function runCarrusel(){ 
    $("#accordion img").click(function(){ 
     $("#slides").show("bind",callback); 
    }); 
    return false; 
} 
function callback(){ 
    $("body").click(function(){ 
     $("#slides").fadeOut(); 
    }); 
    return false; 
} 

function carrusel(){ 
    var t = setInterval(function(){ 
     $("#slides ul").animate({marginLeft:-300},1000,function(){ 
      $(this).find("li:last").after($(this).find("li:first")); 
      $(this).css({marginLeft:0}); 
     }) 
    },5000); 
    return false; 
} 

我一直在寻找的解决方案,但它是不可能的,我这样做。谢谢。

问题是处理程序事件传播到机构。用retun false句子打破这个事件,我们可以点击更多次。

回答

0

当您单击以显示滑块时,click事件传播到隐藏滑块的正文。你应该从传播停止的单击事件:

$("#accordion img").click(function(){ 
    $("#slides").show("bind",callback); 
    return false; // This prevents the event from propagating. 
}); 

此外,因为您附上点击处理程序在callback()功能body元素,你每一个函数调用时附加的处理程序。你应该只附加一次处理程序。

+0

感谢您的解决方案。是传播到身体。简单的解决方案“返回false”;句子。 – user3352840

0

你不需要两个单独的点击处理程序。相反,检查点击事件的目标,并做不同的事情:

$('body').on('click', function(event) { 
    var target = $(event.target); 
    if (target.is('.accordion .slide')) { 
    alert("show slide"); 
    } else { 
    alert("hide slide"); 
    } 
}); 

http://jsfiddle.net/MLBkA/

+0

谢谢,伟大的aportatation和完整的。 – user3352840