2010-03-16 3 views
1

Я хочу, чтобы иметь возможность определить, если HTML-содержимое конкретного элемента содержит элементы уровня блока или нет ...Как определить, содержит ли html элементы уровня блока, используя jQuery?

Я использовал $(el.html()).length == 0, чтобы указать, что не, который работает нормально, но я вскоре понял, что если html содержит «успешный» селектор css, то все это становится грушевидным.

Любые идеи?

Редактировать

Хорошо, так что я не очень ясно. Под «элементами уровня блока» я имел в виду элементы, которые отображаются: блок, неявно или явно.

Причина, почему я хочу сделать это немного сложнее, но это идет что-то вроде этого:

A. Я работаю с «Content редактируемые области», которые могут содержать любой HTML или текст. B. У меня есть серверный модуль, который создает оболочку вокруг содержимого, когда он находится в режиме редактирования с различными классами и метаинформацией в div. C. Я затем с помощью JQuery для:

  1. Переместить содержимое обертки за ее пределами (так что встроенные элементы отображения инлайн ... В противном случае оболочка может разрушить конструкцию страницы)
  2. Абсолютно позиционируйте «обертку» (больше не обертку) за содержимым и используйте его как триггер для выделения содержимого и позволяя контекстное меню отображаться по правому клику.

Чтобы эффективно выполнять 2, я должен исправить ее ширину и высоту, что легко сделать, но не удается, если содержимое является только встроенным. Думая об этом, он не сработает, если содержимое содержит элементы фиксированной ширины ...

Так переосмыслив мой вопрос, я думаю, что я спрашиваю, как определить ширину произвольного раздела содержимого в HTML .... Трудно, нет?

+2

на «элементы уровня блока», вы имеете в виду все элементы с экрана: блок; неявно или явно? – sjobe

+2

Дополнительная информация о том, почему вы пытаетесь достичь этого, может помочь найти ответ. Как конкретный пример, где вы указываете HTML и говорите: «Я бы хотел, чтобы X, Y и Z произошли, когда я делаю ABC». – jessegavin

ответ

0

В конце концов я решил свою проблему другим способом, сделав обертку span вместо div. Таким образом мне не нужно перемещать его содержимое снаружи, но оставлять его внутри обертки. Обертка не заставляет новые строки, что хорошо, и она принимает ширину и высоту своего содержимого.

Хотя я знаю, что это не технически правильно размещать элементы блока внутри span, похоже, что это трюк кросс-браузер того, чего я хотел достичь.

+0

Что я должен * сделать, это установить оболочку для отображения: встроенный блок. –

1

Чтобы получить все элементы блока детей любого родителя с классом .anyclass, попробовать что-то вроде этого:

$("div.anyclass").children().filter(function() { 
return $(this).css("display") === "block"; 
})' 
Смежные вопросы