2013-03-28 5 views
1

Я столкнулся с проблемой, когда использование вызова ajax с помощью подсказки jQueryUI заставляет всплывающую подсказку не закрываться, если вы выбираете несколько экземпляров.подсказки jqueryui не удается закрыть при использовании обратного вызова ajax

Я это показал здесь, http://jsfiddle.net/MHptk/11/

var html = ''; 
var testbox = $("#testid"); //div element 
for (var i=0; i<25; i++) { 
html += '<a href="#" title="test!">test!</a><br />'; 
} 

testbox.html(html); 

testbox.tooltip(
    {tooltipClass:'preview-tip', 
    content: function(callback) { 
     $.ajax({url: '/echo/html/', 
       data: { 
        html: 'woop!', 
       }, 
       method: 'post', 
       success: function(data) { 
        callback(data); 
       }, 
     }); 
    }, 
    }); 

Ролла мыши быстро через ссылку и вы увидите всплывающие подсказки не закрыть. В моем примере с реальной жизнью я создаю таблицу с вызовом jquery ajax, который содержит несколько ссылок, которые сами будут делать запрос ajax. Я также попытался использовать open: установить контент, но произошла одна и та же проблема.

Для обходного пути я думаю, что могу просто заполнить заголовок attr непосредственно при создании таблицы, но это не подходит, учитывая крайне изменчивый характер данных.

ответ

0

Я думаю, что большое количество ссылок так близко друг к другу вместе с вызовом ajax вызывает проблему. Если вы немного их раскроете, я не вижу той же проблемы. Это очень много вызовов ajax, которые быстро срабатывают.

Я просто вставили <p>no link</p> в вашу скрипку, чтобы дать ему больше места

new fiddle link

+0

Даже в вашем примере у меня все еще есть несколько подсказок. Существует ли известная проблема/ошибка? Если это известно, я могу с радостью дождаться выхода новой версии. В противном случае это похоже на раздражающую, но в основном пропущенную ошибку. – Lokicat

+0

Я не думаю, что они думали об этом виде использования. Кажется, должен быть лучший способ получить данные. Возможно, вы можете запросить все всплывающие подсказки для набора, который будет загружен и сохранен в элементе. Это было бы намного более эффективно, чем позволить пользователю запускать 20-30 запросов ajax в секунду. По крайней мере, сохраните ответ, чтобы новый ajax не срабатывал для одного и того же элемента снова и снова. – jmm

+0

Это немного плохо, но, к счастью, сервер локальный, и я сохраняю задержку php-запроса довольно низкой. Тем не менее, я думаю, что я продолжу, просто кэшируя все данные в tooltip var, когда я рисую таблицу. – Lokicat

1

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

close: function(event, ui) { 
    $(".ui-tooltip").hide(); 
} 

В то время как div должны скрываться на закрытии, добавив этот код, который скрывает все div-u-tooltip div. когда закрывается. Я тестировал это на скрипке, указанной в исходном сообщении, и результаты хороши.

Смежные вопросы