jQuery Показывает/Скрывает - значения дисплея CSS влияют на мое расположение

Редактирование : отбеливатель является оберткой вокруг html5lib, который делает еще легче использовать в качестве основанного на белом списке дезинфицирующего средства.

html5lib идет с основанным на белом списке дезинфицирующим средством HTML - это легко разделить его на подклассы для ограничения тегов и приписывает пользователей, позволяются использовать на сайте, и это даже пытается санировать CSS при разрешении использования эти style атрибут.

Вот теперь, я использую его в своем клоне Переполнения стека sanitize_html служебная функция:

http://code.google.com/p/soclone/source/browse/trunk/soclone/utils/html.py

я бросил все нападения, перечисленные в XSS Cheatsheet ha.ckers.org (которые являются ловко доступны в формате XML в нем после работающей Скидки с цены к преобразованию HTML с помощью python-markdown2 , и это, кажется, поддержало хорошо.

редактор WMD компонент, который в настоящее время использует Stackoverflow, является проблемой, хотя - я на самом деле должен был отключить JavaScript для тестирования XSS Cheatsheet нападения, поскольку вставка их всех в WMD закончила тем, что дала мне окна предупреждений и заменила страницу пустым местом.

9
задан TylerH 16 April 2015 в 00:46
поделиться

4 ответа

Вы можете указать свою функцию так:

<%= Ajax.ActionLink("YourAction",new AjaxOptions{ OnSuccess="swfu", UpdateTargetId = "spanButtonPlaceholder" }) %> 

, чтобы ваша функция swfu вызывалась, если ваше обновление прошло успешноl

теги находились в скрытом состоянии, jQuery добавил к каждому из них атрибут под названием oldBlock . Затем я понял, что это было сделано для временного хранения значения CSS display , когда элемент скрыт, чтобы соответствующее значение можно было восстановить, когда элементы будут снова показаны.

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

Начальное состояние:

<div style="text-align:right; width:100%;">
    <span style="display:inline">
        <input type="button" value="Button1" />
    </span>
    ...
</div>

Вызов .hide () переводит нас в следующее состояние:

<div style="text-align:right; width:100%;">
    <span style="display:none" oldBlock="inline">
        <input type="button" value="Button1" />
    </span>
    ...
</div>

Вызов show () возвращает нас к этому состоянию:

<div style="text-align:right; width:100%;">
    <span style="display:inline">
        <input type="button" value="Button1" />
    </span>
    ...
</div>

Основная проблема заключалась в том, что я НЕ давал элементам значение для display в моем исходном состоянии. Следовательно, они неявно получат значение браузера по умолчанию, которое, как я и ожидал, оказывается встроенным . Однако, jQuery будет использовать атрибут oldBlock , только если вы явно установите значение для display до того, как вызовете функцию hide () . Если нет атрибута oldBlock , функция show () использует значение по умолчанию блока .

9
ответ дан 4 December 2019 в 13:47
поделиться

Вместо использования show / hide используйте addClass / removeClass и иметь стиль, который вы хотите применить, настроенный с помощью класса.

.hidden
{
    display: none;
}

.inline
{
    display: inline;
}

.block
{
    display: block;
}

Пример использования:

$('.menuitem').hover(
      function() {
           $(this).parent()
                  .find('span')
                  .removeClass('inline block')
                  .addClass('hidden');
           $(this).addClass('inline');
      },
      function() {
           $(this).addClass('inline');
      }
});
3
ответ дан 4 December 2019 в 13:47
поделиться

У меня не было этой проблемы, но если вам нужно, вы можете явно установить свойства css следующим образом:

$(this).show('fast').css("display","inline");
2
ответ дан 4 December 2019 в 13:47
поделиться

У меня не было этой конкретной проблемы, но для большего контроля используйте .toggleClass ( )

1
ответ дан 4 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: