如何从超链接调用jQuery中的另一个函数?

时间:2013-05-29 15:21:31

标签: php html jquery smarty

我的链接如下:

<div id="demo-testpack">
          <a href="#" class="user-not-loggedin">Demo Test Packages</a>
      </div>

点击此链接后,我正在调用jQuery代码:

$(function() {  
  $("#user-popup-login").dialog({ autoOpen: false }); 
  $( ".user-not-loggedin" )
    .click(function() {
    $( "#user-popup-login" ).dialog( "option", "width", 400 );
    $( "#user-popup-login" ).dialog( "option", "modal", true );
    $( "#user-popup-login" ).dialog( "open" );

    return false;
  });

弹出窗口在此功能后打开一些字段,弹出窗口中有一些链接。弹出窗口中的一个链接如下:

<div id="registern"><a href="#" class="register-btn">Register Now</a></div>

点击此链接后,我想执行以下代码,导致打开另一个弹出窗口。这个jQuery代码如下:

$(function() {  
    $("#create-user-form").dialog({ autoOpen: false }); 
    $( ".register-btn" )
        .click(function() {
        $( "#create-user-form" ).dialog( "option", "width", 560 );
        $( "#create-user-form" ).dialog( "option", "modal", true );
        $( "#create-user-form" ).dialog( "open" );

        return false;
    });

    $( ".get-start" )
        .click(function() {
        $( "#create-user-form" ).dialog( "option", "width", 560 );
        $( "#create-user-form" ).dialog( "option", "modal", true );
        $( "#create-user-form" ).dialog( "open" );

        return false;
    });         

    //This function is used to submit User Registration form
    $('#user_registration_form').live('submit', function() { 
         $('.register').attr('disabled', 'disabled');
         show_request('#registration_error');
            $.ajax({   
                type: $(this).attr('method'),
                url: $(this).attr('action'), 
                data:$(this).serialize(),
                dataType: 'json',
                success: function(response) { 
                    $('.register').removeAttr('disabled', 'disabled');
                    var reg_error = response.reg_error;    

                    if(reg_error=='yes') {
                        var error_msg      = response.error_msg; 
                        var dialog_title   = 'Input Errors Found';                 
                        var dialog_message = error_msg; 
                        $("#registration_error").html(error_msg);
                    } else {
                        $("#registration_error").html('');
                        $( "#create-user-form" ).dialog('close');
                        var suc_msg   = response.suc_msg; 
                        var dialog_title   = 'Registered Successfully';                 
                        var dialog_message = suc_msg; 

                        var $dialog = $("<div class='ui-state-success'></div>")
                        .html("<p class='ui-state-error-success'>"+dialog_message+"</p>")
                        .dialog({
                             autoOpen: false,
                             modal:true,
                             title: dialog_title,
                             width: 500,                       
                             buttons:{
                             'OK': function() {
                                $(this).dialog('close');
                                 }
                             }                                             
                        });
                        $dialog.dialog('open'); 
                        $('#user_registration_form')[0].reset();    
                    }

                } 
            });    
            return false;
    }); 
});

现在我想要实现的是当用户点击上面的链接时,之前打开的弹出窗口应该关闭,只显示这个新的弹出窗口。我做了很多技巧但没有成功。任何人都可以帮我解决这个问题吗?先谢谢。

2 个答案:

答案 0 :(得分:0)

我猜这是范围问题,因为在popup('open')上对$( "#create-user-form" )的调用是在一个不同的匿名函数中,而不是你试图关闭它的地方。尝试将调用打开并在同一个document.ready简写匿名函数中关闭它。

答案 1 :(得分:0)

我尝试过并尝试过,这可以通过以下代码片段实现。这对我来说真的很神奇。

if($( "#user-popup-login" ).dialog( "open" ))
        $( "#user-popup-login" ).dialog( "close" );