我认为这是一个小问题,但不知怎的,我被卡住了。
考虑以下代码
HTML:
<div class="india">
<p class="hidden"> Uttar Pradesh </p>
<p> Andhra Pradesh </p>
<p class="hidden"> Uttar Pradesh </p>
<p> Andhra Pradesh </p>
</div>
CSS:
.hidden{
display: none;
}
JAVASCRIPT:
/* Case 1: No of char inside div when hidden elements are removed
RETURNS 53 */
$('div.india').find(":hidden").remove();
alert($('div.india').text().length);
现在我想返回相同的长度(= 53)而不删除隐藏的元素。我尝试过以下事情(一个接一个/或另一个类似的div),但它们都返回不同的长度
如何在不删除隐藏元素的情况下返回相同的长度?欢迎解释为什么它们长度不同!
链接:http://jsfiddle.net/deveshz/R2QNM/1/
// Without Removing hidden div RETURNS 32
/*Case 2: */
alert($('div.india').find(":visible").text().length);
/* Case 3 */
var charlength = 0;
$('div.india').find(":visible").each(function(){
charlength += $(this).text().length;
});
alert(charlength);
/*Case 4 RETURNS 21*/
var clone = $('div.india').clone();
clone.find(":hidden").remove();
alert(clone.text().length);
答案 0 :(得分:2)
此
$('div.india').find(":hidden").remove();
alert($('div.india p').text());
alert($('div.india p').text().length);
似乎给出与
相同的结果alert($('div.india').find(":visible").text().length);
alert($('div.india').find(":visible").text());
当我测试它时
答案 1 :(得分:1)
案例一和二是不同的因为......(见代码中的评论)
//Case 1: No of char inside div when hidden elements are removed
RETURNS 53 */
$('div.india').find(":hidden").remove();
alert($('div.india').text().length);//here your selector is a div
alert($('div.india p').text().length);//here it is a p tag... ->32
// Without Removing hidden div RETURNS 32
/*Case 2: */
alert($('div.newindia').find(":visible").text().length);//here your selector points to a visible p tag
我正在考虑克隆案例......: - /
编辑:删除了部分答案,因为我在jsfiddle
中做错了答案 2 :(得分:1)
基于@kasper和@Richard的输入
我试过这样做:
alert($('div.india')。text()。length - $( 'div.india')发现( “:隐藏”)。文本()长度);
得到了正确的答案。谢谢你的帮助。
现在,如果我们能够找到克隆返回的原因,这将是一个很好的问题21
答案 3 :(得分:1)
我发现为什么克隆方法会产生其他结果......
http://jsfiddle.net/kasperfish/R2QNM/3/
如果不在dom中,则无法使用:visible或:隐藏在克隆元素上。但是你可以检查他们是否有特定的课程。
$('div.india').find(":hidden").remove();
alert('not clone '+$('div.india').text().length);
var clone = $('div.newindia').clone();
alert('clone '+ clone.find("p:not(.hidden)").text().length);