gpt4 book ai didi

javascript - 通过 Rails 中的自定义 Jquery 对话框处理链接确认

转载 作者:行者123 更新时间:2023-12-03 07:02:27 25 4
gpt4 key购买 nike

我需要一个自定义弹出对话框来替换用于数据确认的默认浏览器选项。网上有很多关于方法:删除的数据确认的示例,但是我需要进行一些小的自定义以使其也适用于普通链接。

例如,我会为两种类型的链接呈现一个对话框:

<%= link_to(scoreboard_team_path(@scoreboard, team), remote: true, method: :delete, data: {confirm: "Are you sure you want to delete?"})%> 

<%= link_to "Clear Teams", deleteteams_scoreboard_path(@scoreboard), class: "btn btn-primary reset-link", :data => {:confirm => "Are you absolutely sure you want to delete all teams?"} %>

根据我在线研究的信息,我提出了以下 jquery 代码,用于在应用程序范围内确认这些类型的链接:

$(document).ready(function(){

$.rails.allowAction = function(link) {
if (!link.attr('data-confirm')) {
return true;
}
$.rails.showConfirmDialog(link);
return false;
};

$.rails.confirmed = function(link) {
link.removeAttr('data-confirm');
if(link.hasClass("reset-link")){
window.location.replace("" + link.context.href + "");
} else {
return link.trigger('click.rails');
}
};


$.rails.showConfirmDialog = function(link) {
var html;
var message = link.data("confirm");
html = "<div id=\"dialog-confirm\" title=\"Warning!\">\n <p>"+message+"</p>\n</div>";
return $(html).dialog({
resizable: false,
modal: true,
buttons: {
OK: function() {
$.rails.confirmed(link);
return $(this).dialog("close");
},
Cancel: function() {
return $(this).dialog("close");
}
}
});
};
});

我的问题是文章的作者没有很好地解释正在发生的事情。

所以我的问题是:

下面的代码是什么意思:

if (!link.attr('data-confirm')) {
return true;
}

window.location.replace(""+ link.context.href + ""); 行中 link.context.href 是什么意思?

最佳答案

if (!link.attr('data-confirm')) {
return true;
}

基本上,它检查传入 (jQuery) DOM 元素的 data-confirm 属性值,如果不存在,该函数将返回 true

<小时/>

In the line window.location.replace("" + link.context.href + ""); what does link.context.href mean?

$().context 已弃用,should not be used 。也就是说,它返回 jQuery 选择器的原始上下文。

一个例子应该可以给你一个想法:

$('.link'                  ).context;  // Return `document` object
$('.link', $('#wrapper')[0]).context; // Return `#wrapper` object
<div id="wrapper">
<a href="#some-link" class="link">Click me</a>
</div>

就您而言,似乎 link.context.href 正在获取 DOM 元素并访问其 href 属性。它本可以执行类似 link.attr('href') 的操作。但是,我想如果作者决定这样写,就会出现一些边缘情况。

关于javascript - 通过 Rails 中的自定义 Jquery 对话框处理链接确认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36980286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com