Всплывающие подсказки jQuery UI, исключающие выбранные теги, не работают
Я использую виджет всплывающей подсказки jQuery UI, и он, кажется, ломается при выборе тегов в 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]-->
Я также попробовал этот код из этой темы, но он все еще не работал. Ни одна из подсказок jQuery UI не отображалась ни в одном браузере.
<!--[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]-->
3 ответа
$(function(){
$("*").each(function(i, el){
$(el).attr("mytitle", $(el).attr("title")).removeAttr("title");
});
$("*").tooltip({
items: "[mytitle]:not([disabled])",
content: function() {
return $(this).attr("mytitle");
}
});
});
Это довольно уродливо, но вы можете установить строку выбора во всех браузерах, переопределить в IE, а затем вызвать ее.
<script>
var tooltipSelector = "*";
</script>
<!--[if IE]>
<script> tooltipSelector = ":not(select)"</script>
<![endif]-->
<script>
$(tooltipSelector).tooltip();
</script>
Примечание: $(document).not("select").tooltip()
выбирает документ, затем удаляет все элементы из коллекции, которые не являются select
Затем элементы (которые являются всеми из них, поскольку это всего лишь документ), затем пытается создать всплывающие подсказки для вашего (теперь пустого) набора. Это дорогое бездействие.
Попробуйте условные теги в решении 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
}
});