想知道,我能做些什麼來檢查div後是否存在任何東西。 在這個例子在這個情況下,應返回真:檢查div後是否存在某些東西
在這種情況下應該返回假:
我嘗試使用$ ('#text')。next()。長度,但不工作。特殊爲第一個例子。
想知道,我能做些什麼來檢查div後是否存在任何東西。 在這個例子在這個情況下,應返回真:檢查div後是否存在某些東西
在這種情況下應該返回假:
我嘗試使用$ ('#text')。next()。長度,但不工作。特殊爲第一個例子。
不知道但是如果存在一個較短的方式:
var text = $("#text"),
hasNext = !!(text.next().length || (text[0].nextSibling && $.trim(text[0].nextSibling.nodeValue)));
基本上我們檢查如果有任何Element節點使用next()
(so,<br/>
或其他元素),如果存在的話,這是第一個地方,那就足夠了。否則,我們檢查是否存在任何nextSibling
對象,以及它是否具有非空字符串的值(因此不考慮任何空格)。
感謝爲我工作,並在任何解決方案? – 2012-04-10 11:08:28
我沒有嘗試,但我相信你可以在上面的'previousSibling'中用'prev()'和'nextSibling'替代'next()'。 – ZER0 2012-04-10 14:22:42
這是因爲jquery沒有提供獲取文本節點的方便方法。您可以使用容器.contents(),它返回文本節點,然後循環查看該div後面的內容。要看到,如果一個節點是它的nodeType ==文本節點3.
是的,你可以使用DOM這種
alert($('div#text').is(':not(:last)') || $.trim($('div#text')[0].nextSibling.nodeValue).length > 0);
你的第三個案件
返回FALSE:
如果有一個空白節點後面跟着一個標籤 – 2012-04-04 11:23:44
@SalmanA,感謝您指出了這一點,這將不起作用。編輯 – 2012-04-04 11:34:16
看一看this demo。我把所有三個案例合併爲一個。該代碼是這樣的:
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"
});
}
此代碼執行以下操作:
你的意思是下一個div,或者div裏面有東西嗎? – sbhomra 2012-04-04 10:13:11