检查div是否只包含内联元素

时间:2013-01-05 00:02:27

标签: javascript jquery html

我正在尝试运行一个在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添加一个块元素。

4 个答案:

答案 0 :(得分:4)

检查这些元素是否实际上是块级的,因为CSS可以完全改变它们的行为:

var has_inline = $('#parent').children().filter(function() {
    return $(this).css('display') !== 'block';
}).length > 0;

我不确定你认为inline-block是什么,所以我只是假设它的行为类似于inline元素。

演示:http://jsfiddle.net/hXckq/2/

答案 1 :(得分:2)

jQuery中的has()如何:

if ($(this).has("p,h1, ...")) { ... }

答案 2 :(得分:0)

您可以将内联元素放入哈希值,然后使用inhasOwnProperty

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;
    }
}