我试图在我的网站上实现jquery-bubble-popup,但是我完全卡住了。我正在尝试做以下事情。
- 如果有人点击"报告信息"div,将显示与该报告有关的气泡弹出。
- 我想要能够改变周围的东西在弹出框和点击提交,这将发布数据到该服务器。
- 如果在弹出窗口外点击。我想让它直接关闭。
很简单的设置,但我在扯我的头发。如果不让弹出窗口乱成一团就无法关闭
小提琴: http://jsfiddle.net/rECnm/1/
jQueryBubblePopup : http://www.maxvergelli.com/jquery-bubble-popup
:
$(document).ready(function () {
$('div.emailReportIcon').CreateBubblePopup({
manageMouseEvents: false
});
$('div.emailReportIcon').click(function (event) {
var button = $(this);
var email = button.attr("data-email");
var message = '<div style="padding:10px;width: 250px;"><p><input type="checkbox"> Email me when new reports are ready.</p>' + '<p>Email Address<br /><input type="text" value="' + email + '"></p>' + '<div >' + '<input type="image" name="submit" value="submit" class="submitButton">' + '</div></div>';
button.ShowBubblePopup({
manageMouseEvents: false,
position: 'bottom',
align: 'left',
tail: {
align: 'left'
},
innerHtml: message,
innerHtmlStyle: {
color: '#000',
'text-align': 'left'
},
themePath: 'http://www.maxvergelli.com/docs/jquery-bubble-popup-examples/images/jquerybubblepopup-themes',
alwaysVisible: false,
closingDelay: 200,
selectable: true
});
});
});
http://jsfiddle.net/rECnm/9/
var button = false;
var active = true;
$(document).ready(function () {
$('div.emailReportIcon').CreateBubblePopup({
manageMouseEvents: false
});
$('div.emailReportIcon').click(function (event) {
resetActiveBubble();
button = $(this);
active = true;
var email = button.attr("data-email");
var message = '<div style="padding:10px;width: 250px;"><p><input type="checkbox"> Email me when new reports are ready.</p>' + '<p>Email Address<br /><input type="text" value="' + email + '"></p>' + '<div >' + '<input type="image" name="submit" value="submit" class="submitButton">' + '</div></div>';
button.ShowBubblePopup({
manageMouseEvents: false,
position: 'bottom',
align: 'left',
tail: {
align: 'left'
},
innerHtml: message,
innerHtmlStyle: {
color: '#000',
'text-align': 'left'
},
themePath: 'http://www.maxvergelli.com/docs/jquery-bubble-popup-examples/images/jquerybubblepopup-themes',
alwaysVisible: false,
closingDelay: 200,
selectable: true,
afterShown: function() {
active = false;
$(".jquerybubblepopup").bind("mouseenter",function() {
active = true;
}).bind("mouseleave", function() {
active = false;
});
}
});
});
$(window).bind('click',function() {
resetActiveBubble();
});
});
function resetActiveBubble() {
if ( button && active == false ) {
button.RemoveBubblePopup();
button.CreateBubblePopup({
manageMouseEvents: false
});
}
}
上面的代码有一个窗口点击监听器,和一个布尔变量来确定气泡是否"活动"(例如鼠标坐在气泡上)。
这个解决方案不能解决ipad等(你需要触摸监听器),当你玩jsfiddle时,你仍然可以通过点击它来关闭它的加载;在aftershow被触发之前,active状态不会被附加。
我确信它可以被优化(也注意控制台)。在jsfiddle中登录)。