如何从打开对话框Jquery UI的链接中检索href值

时间:2009-10-27 11:17:56

标签: jquery jquery-ui javascript

我刚开始学习Jquery并且刚开始编写javascript(我太老了,不能写noob,感觉不对)。

场景:我有一个超链接,可以打开一个对话框并设置一个cookie。对话框询问“您想访问此页面是否确定?”它上面有“是/否”按钮。

如果用户单击是,我希望脚本检索最初单击的链接并转到该页面。我通过检索cookie的值来完成它。虽然这可行,但我确信我可以使用变量,但我不知道对话框是如何在单独的函数中。

所以我的问题:我可以使用设置cookie的变量并将其绑定到对话框中的yes按钮吗?语法是什么样的?

提前致谢

Hairby

代码低于

<script type="text/javascript" language="javascript">
$(document).ready(function() {
$("a").click(function () {
      var cookieset = $(this).attr("href");
      $.cookie("redirectcookie", cookieset, { path: '', expires: 7 });
      $('#dialog').dialog('open');
                    $(".ui-dialog-titlebar-close").hide();
                    return false;           

});

$('#dialog').dialog({
                    autoOpen: false,
                    width: 600,
                    buttons: {
                        "Yes": function() { 
                window.location = 'http://www.mysite.com'+ $.cookie("redirectcookie")       
                    }, 
                        "Cancel": function() { 

                        } 
                    }

                });
    });
    </script>

2 个答案:

答案 0 :(得分:1)

您可以使用method option,在点击链接时添加按钮,而不是在创建对话框时添加按钮:

$("a").click(function () {

    var $link = $(this);

    $('#dialog').dialog('option', 'buttons', {
        "Yes": function() { 
            window.location = $link.attr("href");          
        }, 
        "Cancel": function() { 
            $('#dialog').dialog( 'close' );
        } 
    });

    $('#dialog').dialog('open');
    $(".ui-dialog-titlebar-close").hide();
    return false;
});


$('#dialog').dialog({
    autoOpen: false,
    width: 600
});

注意,我保存了“$(this);”在一个名为“$ link”的变量中,因为“this”具有另一个含义,在回调函数内部,它指向dialog-Object。

修改
会发生以下情况:当文档准备就绪时,选择“a”并单击一个功能 - 功能绑定到它。函数本身不会被执行,但会在用户单击链接时执行。其次,仍处于就绪事件中,选择“#dialog”并创建一个新对话框。唯一的参数是一个包含两个属性“autoOpen”和“width”的Object。就是这样,准备好了。
当用户现在单击链接时,将执行给定的功能。它做了以下事情:

  1. 保存对“this”的引用,点击的链接是什么。注意,我保存了“$(this)”而不是“this”,因此将变量命名为“$ link”而不是“link”。这是一种jQuery约定。
  2. 在对话框中设置“按钮”选项。参数是一个Object,它包含属性“Yes”和“Cancel”,两个值都是一个在单击它们时将被调用的函数。第一个将位置更改为链接'href,第二个关闭弹出窗口
  3. “dialog('open')”打开对话框。
  4. “。ui-dialog-titlebar-close”隐藏
  5. click函数返回false,因此链接href未执行

答案 1 :(得分:0)

您可以使用jQuery's data function来存储数据,而不是使用Cookie