0

我正在尝试运行一个div仅包含内联元素时执行的函数

我不确定如何解决这个问题,而不必列出每个块元素并检查它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

4 回答 4

4

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

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

我不确定你认为inline-block是什么,所以我假设它的行为就像inline你的目的的一个元素。

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

于 2013-01-05T00:07:16.790 回答
2

has()在 jQuery 中怎么样:

if ($(this).has("p,h1, ...")) { ... }
于 2013-01-05T00:04:40.400 回答
0

也许试试这个,检查每个元素的 css 属性是否确实是内联的,这应该可以工作,虽然我没有测试这个语法可能不正确:

$(this).children().each(function(){
    if($(this).css('display', 'inline') == true){
        return true;
    }else{
        return false;
    }
}
于 2013-01-05T00:07:31.517 回答
0

您可以将内联元素放入哈希中,然后使用inor hasOwnProperty

var inline = {
    "span": true,
    "a": true,
    ...
};

if(this.nodeName.toLowerCase() in inline) {

}
于 2013-01-05T00:06:46.907 回答