jQuery v1.11.1 .each() 在多级子元素上使用
jQuery v1.11.1 .each() use on multi level child elements
我需要一种使用 jQuery 或 javascript(首选 jQuery)的方法来 运行 分类一些滑块描述。
我的问题是当我 运行 我的函数时,它 returns 每个 .我已经看到一些关于使用 jQuery 索引的事情,类似于 php,但是 jQuery API 页面并没有很好地解释它。
HTML 待运行...
<div class="description">
<div class="hidden">
<a href="#">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</a>
</div>
<div class="">
<a href="#">consectetur adipiscing elit, Lorem ipsum dolor sit amet, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua..</a>
</div>
<div class="hidden">
<a href="#">sed do eiusmod tempor incididunt Lorem ipsum sit amet, consectetur adipiscing elit, ut labore et dolore magna aliqua.</a>
</div>
下面是我的javascript..
假装我正在使用适当的文档就绪功能等...
<script>
jQuery('div.slideshow_panel > div.description > div.hidden > a').each(function(){
var desctext = jQuery('div.slideshow_panel > div.description > div > a').text();
var cuttext = desctext.substr(0,20);
jQuery( this ).append(cuttext +'...');
});
</script>
提前感谢您的建议!
使用this
引用当前元素:
jQuery('div.slideshow_panel > div.description > div.hidden > a').each(function(){
var desctext = jQuery(this).text();
var cuttext = desctext.substr(0,20);
jQuery( this ).append(cuttext +'...');
});
使用this
关键字引用当前元素,使用.text()
替换内容。
jQuery('div.slideshow_panel > div.description > div.hidden > a').each(function(){
var desctext = jQuery(this).text(); //use 'this' keyword to get current element
var cuttext = desctext.substr(0,20);
jQuery(this).text(cuttext +'...'); //use .text instead to replace
});
你不应该append()
,而是替换文本。
$(this).text(cuttext + '...');
还有针对此特定任务的更简洁的解决方案,使用方法 $.text()
并将回调作为参数(参见 documentation)。
通过这种方式,您不需要 $.each()
及其主体的开销。
$('div.slideshow_panel > div.description > div.hidden > a').text(function(index, text) {
return text.substr(0, 20) + '...';
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="slideshow_panel">
<div class="description">
<div class="hidden">
<a href="#">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</a>
</div>
<br />
<div class="">
<a href="#">consectetur adipiscing elit, Lorem ipsum dolor sit amet, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua..</a>
</div>
<br />
<div class="hidden">
<a href="#">sed do eiusmod tempor incididunt Lorem ipsum sit amet, consectetur adipiscing elit, ut labore et dolore magna aliqua.</a>
</div>
</div>
</div>
我需要一种使用 jQuery 或 javascript(首选 jQuery)的方法来 运行 分类一些滑块描述。
我的问题是当我 运行 我的函数时,它 returns 每个 .我已经看到一些关于使用 jQuery 索引的事情,类似于 php,但是 jQuery API 页面并没有很好地解释它。
HTML 待运行...
<div class="description">
<div class="hidden">
<a href="#">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</a>
</div>
<div class="">
<a href="#">consectetur adipiscing elit, Lorem ipsum dolor sit amet, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua..</a>
</div>
<div class="hidden">
<a href="#">sed do eiusmod tempor incididunt Lorem ipsum sit amet, consectetur adipiscing elit, ut labore et dolore magna aliqua.</a>
</div>
下面是我的javascript.. 假装我正在使用适当的文档就绪功能等...
<script>
jQuery('div.slideshow_panel > div.description > div.hidden > a').each(function(){
var desctext = jQuery('div.slideshow_panel > div.description > div > a').text();
var cuttext = desctext.substr(0,20);
jQuery( this ).append(cuttext +'...');
});
</script>
提前感谢您的建议!
使用this
引用当前元素:
jQuery('div.slideshow_panel > div.description > div.hidden > a').each(function(){
var desctext = jQuery(this).text();
var cuttext = desctext.substr(0,20);
jQuery( this ).append(cuttext +'...');
});
使用this
关键字引用当前元素,使用.text()
替换内容。
jQuery('div.slideshow_panel > div.description > div.hidden > a').each(function(){
var desctext = jQuery(this).text(); //use 'this' keyword to get current element
var cuttext = desctext.substr(0,20);
jQuery(this).text(cuttext +'...'); //use .text instead to replace
});
你不应该append()
,而是替换文本。
$(this).text(cuttext + '...');
还有针对此特定任务的更简洁的解决方案,使用方法 $.text()
并将回调作为参数(参见 documentation)。
通过这种方式,您不需要 $.each()
及其主体的开销。
$('div.slideshow_panel > div.description > div.hidden > a').text(function(index, text) {
return text.substr(0, 20) + '...';
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="slideshow_panel">
<div class="description">
<div class="hidden">
<a href="#">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</a>
</div>
<br />
<div class="">
<a href="#">consectetur adipiscing elit, Lorem ipsum dolor sit amet, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua..</a>
</div>
<br />
<div class="hidden">
<a href="#">sed do eiusmod tempor incididunt Lorem ipsum sit amet, consectetur adipiscing elit, ut labore et dolore magna aliqua.</a>
</div>
</div>
</div>