Пользовательский интерфейс jQuery — переопределение встроенного стиля, сгенерированного автозаполнением?

#jquery #jquery-ui #autocomplete #jquery-autocomplete

#jquery #jquery-пользовательский интерфейс #автозаполнение #jquery-автозаполнение

Вопрос:

Я использую плагин автозаполнения jQuery, который генерирует следующую разметку при появлении предложений.

 <ul class="ui-autocomplete ui-menu ui-widget ui-widget-content ui-corner-all" role="listbox" aria-activedescendant="ui-active-menuitem" style="z-index: 16; width: 1355px; position: relative; top: -1615px; left: 40px; display: none; ">
    <li class="ui-menu-item" role="menuitem">
        <a class="ui-corner-all" tabindex="-1">java</a>
    </li>
    <li class="ui-menu-item" role="menuitem">
        <a class="ui-corner-all" tabindex="-1">javascript</a>
    </li>
</ul>
  

Насколько я понимаю, он использует плагин UI Position для позиционирования его относительно поля ввода. Но внутри сгенерированного style="z-index: 16; width: 1355px; position: relative; top: -1615px; left: 40px; display: none; " ширина намного больше, чем у моего поля ввода.
Поскольку это встроенные стили, добавленные модулем, я не могу переопределить это с помощью ui-autocomplete селектора. Есть идеи?

Комментарии:

1. Примечание: ширина моего поля ввода равна 1140px

Ответ №1:

Используйте !important метод в css: например

 .ui-autocomplete {
    width:200px !important;
}
  

Комментарии:

1. Потрясающее исправление! У меня была такая же проблема, когда jQuery UI (для вкладок) вводил ширину встроенного стиля, а в IE она всегда была основана на пикселях (все другие браузеры основывались на процентах и имели правильное значение). С предложенным вами флагом ‘!important’ в моем CSS IE работает как все другие браузеры … спасибо!

2. @Jeach Приятно знать, что это помогло тебе. Однако вы должны считать этот метод последним возможным вариантом. Потому что это может привести вас к одной из самых болезненных отладок css.

3. Спасибо за совет! Но из любопытства, знаете ли вы (или кто-либо еще), почему в IE они вводят значение пикселя (которое слишком велико, что еще хуже), а во всех других браузерах они вводят процент?

4. Возможно, IE не может достичь 100%. Например: width = 950 ; 25% от 950 — это 237.5 . Возможно, IE попытается отобразить это как 238 и, возможно, как 237 . Я не знаю, это всего лишь предположение. Но в любом случае у вас будет 2 лишний пиксель.