Как показать всплывающую подсказку по клику
Я пытаюсь использовать qtip2. Моя проблема заключается в том, что я хочу показывать всплывающую подсказку только тогда, когда пользователь нажимает href с указанным html внутри. Поэтому я пытаюсь сделать следующее:
function help(){
var link = document.getElementById('helps');
if(link.innerHTML=="Open"){
$('#helps').qtip({
content: {
text: 'I get shown on click'
},
show: {
event: 'click'
}
});
link.innerHTML = "Close";
}else{
link.innerHTML="Open";
}
}
<a href="javascript:help()" id="helps">Open</a>
Моя проблема в том, что когда я нажимаю, текст становится Close, но всплывающая подсказка не отображается. Когда я нажимаю снова, текст становится Open, и я вижу всплывающую подсказку. Что я могу сделать?
5 ответов:
Вы должны инициализировать
qtipперед обработчикомonclick.$('#helps').qtip({ content: { text: 'I get shown on click' }, show: { event: 'click' } }); function help() { var link = document.getElementById('helps'); if (link.innerHTML == "Open") { link.innerHTML = "Close"; } else { link.innerHTML = "Open"; } } < a href = "javascript:help()" id = "helps" > Open < /a>
Я бы сделал так:
Код JS:
$(function(){ $('#helps').qtip({ content: { text: 'I get shown on click' }, show: { event: 'click' }, hide: { event: 'click' } }).click(function() { var _$this = $(this); if(_$this.html() === 'Open') { _$this.html('Close'); } else { _$this.html('Open'); } }) });HTML one:
<a href="javascript:void(0)" id="helps">Open</a>EDIT: чтобы скрыть всплывающую подсказку на внешнем клике:
$(function(){ $(this).click(function(e) { var _$elm = $(e.target); if(_$elm.attr('id') !== 'helps') { $('#helps').qtip('hide'); } return false; }); $('#helps').click(function() { var _$this = $(this); if(_$this.html() === 'Open') { _$this.html('Close').qtip('enable'); } else { _$this.html('Open').qtip('disable').qtip('hide'); } }).qtip({ content: { text: 'I get shown on click' }, show: { event: 'click', when: { target: $('#helps:contains("Open")') } }, hide: { event: 'click', when: { target: $('#helps:contains("Close")') } } }); });
Вы должны сделать
$('#helps').qtip({ content: { text: 'I get shown on click' }, show: { event: 'click', target: $('#helps:contains("Open")') } }); $('#helps').click(function() { if (this.innerHTML=="Open") { this.innerHTML = "Close"; } else { this.innerHTML="Open"; } }); <a id="helps">Open</a>Ваш код не работал, потому что вы создавали qTip с первого клика! Вы должны использовать опцию target qTip, чтобы подсказка отображалась только в том случае, если ваш элемент содержит текст "Open"
Или даже лучше, используйте jQuery для всех ваших сценариев JS:
$(function(){ $('a.tooltip').qtip( { content: 'Some basic content for the tooltip!', api:{ onShow: function(){ $('a.tooltip').html('Close'); }, onHide: function(){ $('a.tooltip').html('Open'); } }, show: { when: { event: "click" } } }); }); <a class='tooltip' href='#'>Click me!!</a>
Я думаю, что вы могли бы использовать:
$('#helps').Q совет({ содержание: { текст: "меня показывают по клику" });
- это лучший способ получить классическую подсказку..
Comments