检查是否DIV后存在的东西

只是想知道,我可以做什么检查,如果一个div之后存在的东西。 在这个例子中在这个情况下,应返回true:

http://jsfiddle.net/BsqTg/1/

http://jsfiddle.net/BsqTg/2/

在这种情况下应该返回false:

http://jsfiddle.net/BsqTg/3/

我尝试使用$('#文本“)。下一个()。长度,但不working.Special为第1的例子。

--------------解决方案-------------

不知道但是如果存在一个较短的方式:

var text = $("#text"),
hasNext = !!(text.next().length || (text[0].nextSibling && $.trim(text[0].nextSibling.nodeValue)));

基本上我们检查排在首位,如果有使用任何元素节点next()所以, <br/>或其他元素),如果有,那么就足够了。 否则,我们检查,如果有任何nextSibling对象,如果它有一个值是不是空字符串(所以任何空白不在考虑范围)。

看看这个演示 。 我曾在一个组合的所有三种情况。 该代码是这样的:

var $contents = $(this).contents().filter(function() {
// modify the following line to indicate what recon as "something"
return (this.nodeType == 1 || this.nodeType == 3) && /\S/.test(this.nodeValue);
});
var $text = $(this).find(".text:first");
if (console && console.log) {
console.log($contents, $contents.index($text), $contents.length);
}
if ($contents.index($text) == $contents.length - 1) {
$(this).css({
background: "#F99"
});
}
else {
$(this).css({
background: "#9F9"
});
}

此代码执行以下操作:

  1. 抓住所有的节点,包括文本和注释节点和检查,如果他们是什么
  2. 它计算这些节点
  3. 发现特定元素的该列表的检查里面的索引,如果它是最后一个

是的,你可以使用DOM此

alert($('div#text').is(':not(:last)') || $.trim($('div#text')[0].nextSibling.nodeValue).length > 0);

返回你的第三个案例假:

http://jsfiddle.net/BsqTg/8/

这是因为jquery的不给获取文本节点的方便的方法。 您可以使用它确实返回文本节点,然后通过该循环,看看有div的问题后,容器.contents()。 要查看某个节点是它的nodeType == 3文本节点。

分类:JavaScript的 时间:2015-03-15 人气:0
本文关键词: JavaScript的HTML,jQuery的
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.458 (s). 10 q(s)