2012-02-28 117 views
0

我需要在用户单击适当的按钮时发出警报。为什么我无法获得戒备?

这是我的插件:

(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> 
+0

会发生什么,如果你警报(结果); ? – MyStream 2012-02-28 21:50:00

+0

@ MyStream-它没有显示任何东西,弹出窗口就消失了。 – coder 2012-02-28 21:50:59

+2

你检查过JS控制台吗? – jman 2012-02-28 21:51:53

回答

2

.btn-Ok的价值,它要传递到您的success回调,是一个空字符串。试着改变你的点击处理程序通过定位标记的text()代替:

$('.btn-Ok').click(function (e){ 
    e.preventDefault(); 
    var value = $(this).text(); // pass text instead of value 
    options.success(value); 
    $(this).parent().parent().animate({top:'toggle'},80); 
    setTimeout(function() {   
     $('.page').fadeOut().remove();  
    },400);  
}); 

或者硬编码传递给success回调值:

options.success("OK"); 
+0

@ RoccoC5-非常感谢你的工作,很好:) – coder 2012-02-28 21:55:25

相关问题