Подсказки пользовательского интерфейса jQuery, за исключением выбранных тегов, не работают

Я использую виджет всплывающей подсказки пользовательского интерфейса jQuery, и он, кажется, ломается при выборе тегов в Internet Explorer. Поэтому я исключаю теги select из инициализации. Однако, похоже, это не работает, потому что в Internet Explorer теперь отсутствуют все расширенные всплывающие подсказки.

Это то, что у меня было раньше, что не работало с тегами выбора IE:

<script>j(document).tooltip();</script>

Сейчас перехожу на этот код. j(document).not("select") предотвращает отображение расширенных всплывающих подсказок. Как заставить этот код работать?

<!--[if IE]>
    <script>j(document).not("select").tooltip();</script>  <-- Doesn't Work
<![endif]-->
<!--[if !IE]>
    <script>j(document).tooltip();</script>
<![endif]-->

Я также попробовал этот код из этого thread, но он все еще не не работает. Ни одна из всплывающих подсказок пользовательского интерфейса jQuery не отображалась ни в одном браузере.

<!--[if IE]>
    <script>j('*').tooltip(); j('select').tooltip('disable');</script>
<![endif]-->
<!--[if !IE]>
    <script>j(document).tooltip();</script>
<![endif]-->


Обновление:

Я попробовал это и вернулся к тому, с чего начал:

<script>j('*').tooltip();</script>
<!--[if IE]>
<script>j('select').tooltip('disable');</script>
<![endif]-->

person Daniel Harris    schedule 21.06.2013    source источник
comment
Вам не хватает DOM ready handler   -  person Sushanth --    schedule 21.06.2013
comment
Какой браузер будет отображать <!--[if !IE]>???   -  person Brad M    schedule 21.06.2013
comment
jsfiddle.net/pdavis68/h26Vr Я что-то упустил? Кажется, работает нормально в IE9   -  person Pete    schedule 22.06.2013
comment
@BradM quirksmode.org/css/condcom.html   -  person Pete    schedule 22.06.2013
comment
@Pete Нет, это не работает в IE9 или IE10. Вы пробовали нажать на меню выбора? Он закрывается всякий раз, когда вы пытаетесь выбрать элемент.   -  person Daniel Harris    schedule 22.06.2013
comment
У вас есть действительный !DOCTYPE?   -  person Cholesterol    schedule 22.06.2013
comment
@ Даниэль Это то, чего мне не хватало.   -  person Pete    schedule 22.06.2013
comment
@Холестерин Да <!DOCTYPE html>   -  person Daniel Harris    schedule 22.06.2013
comment
Согласно тикету по этому вопросу (bugs.jqueryui.com/ticket/8798), Решение состоит в том, чтобы обернуть ваш выбор в div (также будет работать диапазон), а затем поместить атрибут title в div/span.   -  person Pete    schedule 22.06.2013
comment
О, и для протокола, я думаю, что это отстойное разрешение, но это IE, так что, возможно, не было лучшего.   -  person Pete    schedule 22.06.2013


Ответы (2)


Это довольно уродливо, но вы можете установить свою строку выбора во всех браузерах, переопределить в IE, а затем вызвать ее.

<script>
    var tooltipSelector = "*";
</script>
<!--[if IE]>
<script> tooltipSelector = ":not(select)"</script>
<![endif]-->
<script>
    $(tooltipSelector).tooltip();
</script>

Боковое примечание: $(document).not("select").tooltip() выбирает документ, затем удаляет все элементы из коллекции, которые не являются элементами select (то есть все они, поскольку это всего лишь документ), затем пытается создать всплывающие подсказки для вашего (теперь пустого) набора. Это дорогая операция.

person Dennis    schedule 21.06.2013

Попробуйте условные теги в решении javascript:

var ie = (function(){

    var undef,
        v = 3,
        div = document.createElement('div'),
        all = div.getElementsByTagName('i');

    while (
        div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',
        all[0]
    );

    return v > 4 ? v : undef;

}());

j(function(){

    if(!ie){

        //ie will be undefined if a different browser than IE is used
        //otherwise it will return the IE version
        //handle IE here

    }
    else {

        //handle the rest of the browsers here
    }

});
person Johan    schedule 21.06.2013