我想重定向到<a> only after confimation?</a>上的链接

时间:2013-06-27 10:22:51

标签: jquery html django loops

我遇到了问题,我正在努力。我想在确认后重定向到链接href="/jobs/emp/del/?id={{ job.pk }}"。我正在使用bootboxjs

{% for job in jobs %}
<a class="btn deleteJob" href="/jobs/emp/del/?id={{ job.pk }}"</a> 
{% for job in jobs %}

在执行链接/jobs/emp/del/?id={{ job.pk }}之前,如何确认?

我试过了:

<a class="btn deleteJob"><span style="display:none">/jobs/emp/del/?id={{ job.pk }}</span>
                            <i class="icon-trash"></i></a>
<script src="/static/js/bootbox.js" type="text/javascript"></script>
<script>

$('.deleteJob').click(function(){
    bootbox.confirm("Are you Sure want to delete!", function (x) {
    if (x){

        var link= $(this).find( $spans ).text();            
        document.location.href='/'+link+'/';}
    });        
});
</script>

在一个大的for循环中,但它不起作用!?

5 个答案:

答案 0 :(得分:7)

我没有使用bootbox,但假设函数中的x值是弹出窗口的布尔结果,这应该有效:

<a href="/jobs/emp/del/?id={{ job.pk }}" class="btn deleteJob">
    <i class="icon-trash"></i>
</a>
$('.deleteJob').click(function(e) {
    e.preventDefault();
    var $link = $(this);
    bootbox.confirm("Are you Sure want to delete!", function (confirmation) {
        confirmation && document.location.assign($link.attr('href'));
    });        
});

注意,你提到了一个for循环 - 那里的jQuery代码不需要在循环中。该代码适用于.deleteJob锚元素的所有实例。

答案 1 :(得分:3)

您可以使用preventDefault()停止重定向;

$('.deleteJob').click(function(e) {
    e.preventDefault();
    if(confirm("Are you Sure want to delete!")) {
        var link= $(this).find( $spans ).text();            
        document.location.href='/'+link+'/';}
    }
});

我不确定bootbox所以这只是jQuery解决方案

答案 2 :(得分:0)

<script>

  $('.deleteJob')each(function(){
   var href = $(this).attr("href");
   $(this).click(function(){
   if(confirm("Are you sure you want to delete this job ?"))
   {
       document.location.href='/'+href+'/';}
   }

   });

  });
</script>

如果您不介意使用浏览器中的常规确认窗口,这可能会有效。

答案 3 :(得分:0)

如果你在循环之外使用它,它是否有效?问题似乎是你遇到了javascript闭包问题,这基本上意味着循环中分配的函数将在下次执行循环时被覆盖,因此onclick函数只会绑定在最后一个解析为它的DOM上。环。为了解决这个问题,将onclick赋值移动到在循环的每次迭代中调用的外部函数(您可能需要解析。

这个有效的jquery标识符也是?:$ spans

在这里阅读closures

答案 4 :(得分:0)

如果确认功能的结果为假,则必须阻止默认操作

$(document).ready(function () {
    $(".deleteJob").on("click", function (e) {
        if (!confirm("Are you Sure want to delete!")) {
            e.preventDefault();
        }
    });
});