【问题标题】:jQuery - Open href from PopupjQuery - 从弹出窗口打开 href
【发布时间】:2014-08-08 22:09:48
【问题描述】:

这是我在这里的第一个问题,让我们看看情况如何。

所以,就这样吧:

HTML:

<td><a href="https://www.google.es" class="confirmDelete">delete</a></td>
<div id="confirmDeleteBox" title="Delete Confirm" style="display:none"></div>

jQuery:

 $('.confirmDelete').click(OpenDeleteDialog);
//Delete Column functionallity
function OpenDeleteDialog() {
    $("#confirmDeleteBox").html("Confirm Delete Dialog Box");

    $("#confirmDeleteBox").dialog({
        resizable: false,
        modal: true,
        title: "Modal",
        height: 250,
        width: 400,
        buttons: {
            "Yes": function () {
                $(this).dialog('close');
                callback(true);
            },
            "No": function () {
                $(this).dialog('close');
                callback(false);
            }
        }
    });
    event.preventDefault();
}



function callback(value) {
    if (value) {
        $(this).closest('.confirmDelete').attr('href');

    } else {
        alert("Rejected");
    }
}

所以,问题是我有一个包含删除、复制或添加行的列的表,我想在每次您要删除、复制或添加时进行弹出确认。 弹出窗口有效,但是当我想按“是”时,它不会返回到我按的链接(在我的示例中是 google 链接)。

我正在使用动态链接,所以我不能直接指向,行(和它的 href)是动态生成的。

如何在弹出窗口的“是”选项中“单击”链接的 href?

顺便说一句,我在这部分尝试过:

function callback(value) {
    if (value) {
        $(this).attr('href');

    } else {
        alert("Rejected");
    }
}

我尝试过:$(this).attr('href');window.location = $(this).attr('href'); 等...

【问题讨论】:

  • 你希望链接被点击Yes吗?
  • 是的。是确认。当您单击“删除”链接时,我希望弹出窗口显示并询问您“是或否”(目前正在工作),当您单击“是”时,它会获取原始链接的“href”值(删除链接)

标签: jquery hyperlink popup click href


【解决方案1】:

你有两个问题:

  1. callback() 中,this 不是你想的那样。
  2. .attr('something') 是一个 getter。它只检索一个值。

试试这个:

$('.confirmDelete').click(OpenDeleteDialog);
//Delete Column functionallity
function OpenDeleteDialog() {

    var $link = $(this); //keep track of the element that was clicked

    $("#confirmDeleteBox").html("Confirm Delete Dialog Box");

    $("#confirmDeleteBox").dialog({
        resizable: false,
        modal: true,
        title: "Modal",
        height: 250,
        width: 400,
        buttons: {
            "Yes": function () {
                $(this).dialog('close');
                callback(true, $link); //pass the reference to the element
            },
            "No": function () {
                $(this).dialog('close');
                callback(false);
            }
        }
    });
    event.preventDefault();
}

function callback(confirmed, $el) {
    if (confirmed) {
        window.location = $el.attr('href'); //change the page's location    
    } else {
        alert("Rejected");
    }
}

【讨论】:

  • 非常非常非常感谢。工作完美。我从一开始就错了。谢谢!!
【解决方案2】:

Working Demo


试试这个,

$('.confirmDelete').click(OpenDeleteDialog);
//Delete Column functionallity
var currentHref;   //store href of current selected link

function callback(value) {
    if (value) {
        window.location = $(currentHref).attr('href');

    } else {
        alert("Rejected");
    }
}

function OpenDeleteDialog(event) {

    currentHref = event.target;  //get the clicked element

    $("#confirmDeleteBox").html("Confirm Delete Dialog Box");

    $("#confirmDeleteBox").dialog({
        resizable: false,
        modal: true,
        title: "Modal",
        height: 250,
        width: 400,
        buttons: {
            "Yes": function () {
                $(this).dialog('close');
                callback(true);
            },
            "No": function () {
                $(this).dialog('close');
                callback(false);
            }
        }
    });
    event.preventDefault();
}

  • 使用event.target获取当前链接的值。
  • 您也可以使用传递当前选定元素的值

    $('.confirmDelete').click(function(){
        OpenDeleteDialog(this);
    );
    
    function OpenDeleteDialog(obj){..}
    

【讨论】:

  • 感谢您的回答。我放入另一个并锻炼了,没有尝试你的,因为我很着急(工作,工作,工作),但我非常感谢你的关注和努力。非常感谢!!! :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-04
  • 2011-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
相关资源
最近更新 更多