[英]How can I select the first specific class after element in jQuery
我需要计算textarea中内容的字符,并在下面的特定类中显示它。
我正在使用以下对我不起作用的代码:
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
$(".messageText").each(function(){
$(this).next(".messageCharacters").text($(this).val().length);
$(this).next(".messagePages").text(($(this).val().length / 70).toFixed());
});
$(".messageText").keyup(function(){
$(this).next(".messageCharacters").text($(this).val().length);
$(this).next(".messagePages").text(($(this).val().length / 70).toFixed());
});
});
</script>
<p>
<textarea name="title1" class="messageText">phrase1</textarea>
<br /><span class="messageCharacters">0</span> characters - <span class="messagePages">0</span> pages
</p>
<p>
<textarea name="title2" class="messageText">phrase2</textarea>
<br /><span class="messageCharacters">0</span> characters - <span class="messagePages">0</span> pages
</p>
我应该如何解决?
.messageText
旁边的元素是br
,因此$(this).next(".messageCharacters")
将永远不会返回您的元素。
使用.nextAll()
代替:
$(this).nextAll(".messageCharacters")
首先,您的$(".messageText").keyup(function(){
在document.ready
函数之外,因此DOM解析器不会收集您的.messageText
元素。
.next()
元素也是<br>
因此您需要定位父容器或执行.nextAll()
例如:
$(function(){ // DOM ready shorthand
function count() {
$(this).nextAll(".messageCharacters").text(this.value.length);
$(this).nextAll(".messagePages").text((this.value.length/70).toFixed());
}
$(".messageText").each(count).on("input", count);
});
为防止您的textarea(使用鼠标右键- 粘贴 )内的一个拷贝pasteing文字和脚本无所作为使用.on("input")
注册textarea的价值监听器里的任何变化。
还考虑一下($(this).val().length/70).toFixed()
如果最初34个字符使它的pages=2
仅在105时您将获得pages=3
。 因此,请再次审查该数学。
将$(this).next更改为 $(this).siblings
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.