2011-09-27 65 views
1

我希望在点击按钮时显示每个“p”元素。但它不是没用,请帮忙。foreach with jquery元素

<script> 
$(document).ready(function(){ 
$("p").hide(); 
    $("button").click(function(){ 
      $('p').each(function() { 
       //alert($(this).text()); 
       var abc = $(this).text(); 
       abc.next().show(); 
       }); 
    });  
}); 
</script> 


<button>Toggle</button> 
<p>Hello</p> 
<p>Good morning</p> 
<p>Good after noon</p> 
<p>Good evening</p> 
<p>Good night</p> 

<div></div> 

回答

7
$("p").hide(); 

$("button").click(function(){ 
    $('p').each(function() { 
     if (!$(this).is(":visible")) { 
      $(this).show(); 
      return false; 
     } 
    }); 
}); 
+0

我想1个p元素,显示HTML和CSS点击一下 – ktm

+0

@sagarmatha好吧,我更新了我的答案。 –

+0

感谢您的回答 – ktm

0

尝试使用下面的代码:

$('p').each(function() { 
      $(this).show(); 
    }); 

或者干脆

$('p').show();  

希望这有助于!

0

我会潜在扩展它更进一步:我假设你的例子是简化对话简化和简化的示例。如果您的应用程序需要进行大量的DOM操作(即某些元素可能会被销毁和重建),或者如果遇到围绕'click'事件绑定的时间问题,我会使用.delegate()来绑定点击:

$(document).ready(function(){ 
    $("p").hide(); // there are other ways to hide depending on your needs or to avoid FOUC 
    $("body").delegate("button", "click", function() { 
    $("p").show(); 
    } 
}); 

我之所以选择“身体”作为听众只是因为我不知道你的网页内容。最好的倾听者是最近的父母,他们没有被破坏的危险,通常是某种包装师。如果可以的话,换掉一个更具体的选择“身体”。

这里的区别:

。点击():“抓住这个特定的元素,并要求它侦听本身点击” .delegate():“抓住父级对象并要求它监听与指定选择器匹配的任何元素的点击。”

.delegate()出于某种目的可能是“矫枉过正”,但我在任何时候都可以使用它,因为它更具前瞻性。

0

这里是一个将展示一个在与HTML时间的JavaScript你有

var hiddenP = $("p:hidden"); 
var howMany = hiddenP.length; 
var pIndex = 0; 
$("button").click(function(evt){ 
    if (pIndex == howMany) 
     return false; 
    $(hiddenP[pIndex]).fadeIn(1000); 
    pIndex +=1; 
}); 

看看上的jsfiddle的例子,查看http://jsfiddle.net/Cvm68/

+0

我知道你已经选择了@rfausak答案,如果你想在第一次点击后显示所有答案,那么这个答案很棒,但是恐怕它不会一次显示一个答案,因为每个循环都会运行直到所有元素都被更改。积极:) –