【发布时间】:2012-02-28 21:48:38
【问题描述】:
我需要在用户点击相应按钮时发出警报。
这是我的插件:
(function($){
// Defining our jQuery plugin
$.fn.Message= function(prop){
// Default parameters
var options = $.extend({
height : "250",
width : "500",
autoclose:false,
type: "Success",
success: function (result) { },
title:"JQuery Modal Box Demo",
description: "Example of how to create a modal box.",
top: "20%",
left: "35%",
imagePath: 'images/success.png',
},prop);
return this.click(function(e){
add_block_page();
add_popup_box();
setTimeout(function() {
$('.JMesg').animate({top:'toggle'},80);
},300);
if(options.autoclose==true)
{
setTimeout(function() {
$('.close').trigger('click');
},4000);
}
});
function add_block_page(){
var block_page = $('<div class="page"></div>');
$(block_page).appendTo('body');
}
function add_popup_box(){
var pop_up = $('<div class="Message"><a href="#" class="close"></a><div class="header"><h3>' + options.title + '</h3></div><div class="mainbody"><table><tr><td><img src='+ options.imagePath +' class="mesgicon"/></td><td><p class="bodytext">' + options.description + '</p></td></tr></table></div><div class="footer"><a href="#" class="btn-close"><span>close</span></a></div></div>');
$(pop_up).appendTo('.page');
if(options.type=="Success"){
var buttons =$('<a href="#" class="btn-Ok"><span>OK</span></a>');
$(buttons).appendTo('.footer');
}
if(options.buttons=="Error"){
var buttons =$('<a href="#" class="btn-Ok"><span>OK</span></a>');
$(buttons).appendTo('.footer');
}
if(options.buttons=="Info"){
var buttons =$('<a href="#" class="btn-Ok"><span>OK</span></a>');
$(buttons).appendTo('.footer');
}
if(options.buttons=="Confirm"){
var buttons =$('<a href="#" class="btn-Yes"><span>Yes</span></a><a href="#" class="btn-No"><span>No</span></a><a href="#" class="btn-Cancel"><span>Cancel</span></a>');
$(buttons).insertBefore('.footer');
}
if(options.type=="Alert"){
var buttons =$('<a href="#" class="btn-Ok"><span>OK</span></a>');
$(buttons).appendTo('.footer');
}
$('.close').click(function(){
$(this).parent().animate({top:'toggle'},80);
setTimeout(function() {
$('.page').fadeOut().remove();
},400);
});
$('.btn-close').click(function(){
$(this).parent().parent().animate({top:'toggle'},80);
setTimeout(function() {
$('.page').fadeOut().remove();
},400);
});
$('.btn-Ok').click(function (e){
e.preventDefault();
var value = $(this).val();
options.success(value);
$(this).parent().parent().animate({top:'toggle'},80);
setTimeout(function() {
$('.page').fadeOut().remove();
},400);
});
}
return this;
};
})(jQuery);
我是这样称呼的:
<script type="text/javascript">
$(document).ready(function () {
$('.SuccessMessage').Message({
type:"Success",
autoclose: false,
imagePath: 'images/success.png',
title: 'Hoorah!',
description: 'Success!.',
success: function (result) {
if (result == "OK") {
alert("One cup of coffee coming right up!");
}
}
});
</script>
【问题讨论】:
-
如果你警告(结果)会发生什么; ?
-
@MyStream-它没有向我显示任何内容,弹出窗口就消失了。
-
你介意用这个做一个 jsFiddle 吗?
-
您的文档中缺少
});。准备就绪。 -
使用像 $('.close') 这样的选择器对于与其他元素的冲突是危险的。将您的父元素缓存到 $blockPage,然后使用 $blocpage.find('.close') 将所有事件隔离到您的模块或模块的其他实例