我正在尝试运行一个在div
仅包含inline elements
我不确定如何排除每个块元素并检查div
不包含该元素。
$(this).children().each(function(){
if(this.nodeName.toLowerCase() == 'p' || this.nodeName.toLowerCase() == 'h1' etc...){
check = true; //it contains block element so it is not only inline elements
return false;
}
});
有更好的方法吗?
修改
为了帮助澄清,我有一个内容可编辑div
,问题是用户可以删除div
中的所有块元素。我需要检查这个并向div添加一个块元素。
答案 0 :(得分:4)
检查这些元素是否实际上是块级的,因为CSS可以完全改变它们的行为:
var has_inline = $('#parent').children().filter(function() {
return $(this).css('display') !== 'block';
}).length > 0;
我不确定你认为inline-block
是什么,所以我只是假设它的行为类似于inline
元素。
答案 1 :(得分:2)
jQuery中的has()
如何:
if ($(this).has("p,h1, ...")) { ... }
答案 2 :(得分:0)
您可以将内联元素放入哈希值,然后使用in
或hasOwnProperty
:
var inline = {
"span": true,
"a": true,
...
};
if(this.nodeName.toLowerCase() in inline) {
}
答案 3 :(得分:0)
也许试试这个,检查每个元素的css属性是否确实是内联的,这应该可行,虽然我没有测试这个语法可能不正确:
$(this).children().each(function(){
if($(this).css('display', 'inline') == true){
return true;
}else{
return false;
}
}