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

インライン要素をハッシュに入れてから、inまたはhasOwnProperty:を使用できます。

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

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

}
于 2013-01-05T00:06:46.907 に答える
0

たぶんこれを試して、各要素のcssプロパティが実際にインラインであるかどうかを確認してください。これは機能するはずですが、この構文は正しくない可能性があります。

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