У меня есть страница, на которой есть некоторые DIV. Я хочу показать qTip2 всякий раз, когда нажимается DIV. Из-за каких-то других вещей, которые я делаю с qTip, я бы хотел повторить одно и то же снова и снова, если это возможно.Плагин JQuery qTip2 - Click-to-show работает только с первым элементом в первый раз
Итак, я использовал демонстрацию qTip2 в качестве отправной точки, и насколько я могу судить, я точно ее продублировал. Вот и проблема: он показывает только qtip для первого элемента, который был нажат - в первый раз. Он будет отображаться на всех других элементах столько раз, сколько вы хотите щелкнуть по ним, а первый - только в первый раз.
Неужели кто-нибудь подбегает к этому и имеет средство?
Вот код для примера приложения я создал, что вы столкнулись с проблемой:
CSS:
#Container { border: 1px solid black; }
#Container > DIV { float: left; border: 2px outset silver; margin: 5px; }
#Container > DIV:nth-last-child(1) { float: none; border: none; height: 1px; overflow: hidden; margin: -1px 0 0 0;}
JavaScript:
var Container;
var ContainerEndItem;
$(document).ready(function() {
Container = $('#Container');
if(Container.length == 0){
alert("Container not found!");
return;
}
var addLinks = $('.TipTarget');
$('<div>Test</div>').qtip({
content : 'Test',
position: {
target: 'mouse', // Use the triggering element as the positioning target
adjust: { mouse: false, method: 'flip' },
my: 'left center',
at: 'right center',
effect: true // Enable default 'slide' positioning animation
},
show: {
target: addLinks,
event: 'click',
delay: 0
},
hide: {
event: 'none'
},
events: {
show: function (event, api) {
// Update the content of the tooltip on each show
var target = $(event.originalEvent.target);
if(target.length) {
api.set('content.text', 'Looking at: ' + target.text());
}
}
}
});
});
HTML:
<div id="Container">
<div id="Apples" class="TipTarget">Apples</div>
<div id="Watermelons" class="TipTarget">Watermelons</div>
<div id="Peaches" class="TipTarget">Peaches</div>
<div id="Meat" class="TipTarget">Meat</div>
<div id="Clear" style="clear: both"> </div>
</div>
JQuery : 1,8,3
qTip2: 2.0.1
Вот jsFiddle с точной настройки: http://jsfiddle.net/Dracorat/Z3WqC/
Обратите внимание, что если вы начинаете, нажав Apple, затем Арбузы, затем персики, затем яблоки, затем Арбузы, затем Персики , и продолжайте повторять, что Apple покажет отзыв в первый раз. Остальные покажут это, пока корова не вернутся домой.
Обратите внимание, что если вы обновите и начнете с Арбуза, он будет показывать только первый раз, но все остальное будет отображаться каждый раз.
Что я сделал не так?
(А я уже пробовал использовать «каждый» конструкт - это не изменило поведение вообще)
Спасибо!
Еще одна причуда, которую я нашел, если вы это сделаете: 'adjust: {mouse: true, method: 'flip'},' отлично работает – stackErr
Не знаю почему, но кажется, что первый объект, который будет показан, имеет свой событие удалено (не всегда - если вы установите show 'event: 'mousemove'', похоже, что он работает). Он также работает с любым событием, если вы запускаете событие hide после первого показа: например. http://jsfiddle.net/Z3WqC/4/ – xjedam
Я буду смотреть на утечку памяти (и, возможно, исправить ее сам, если смогу). Что касается двух других комментариев, я не могу закрыть всплывающую подсказку самостоятельно или перемещаться на основе мыши, потому что контент, который я фактически использую во всплывающей подсказке, представляет собой форму с элементами формы, которая обновляет себя, основываясь на том, как пользователь использует эту страницу. (Вот почему я использую ту же подсказку для нескольких мест.) – Dracorat