Jquery 单击按钮在第一次单击时未正确绑定,但在第二次单击时已正确绑定
我正在使用VS2010、MVC3。Jquery 单击按钮在第一次单击时未正确绑定,但在第二次单击时已正确绑定,jquery,jquery-ui,asp.net-mvc-3,jquery-events,Jquery,Jquery Ui,Asp.net Mvc 3,Jquery Events,我正在使用VS2010、MVC3。 我有以下jQuery脚本,在单击按钮时,在控制器中有一个ActionResult,将页面的PDF版本流到一个新窗口 然而,发生的情况如下: 当第一次呈现页面时,我会收到警告:“在这里B1”和actionUrl的正确url值。 第一次单击该按钮时,我会将“in hereb2”和“undefined”警报作为url的值,并打开一个新窗口,其中未定义资源出现错误。 第三次单击按钮时,我会得到“在hereb2中”的警报和正确的url值(与actionUrl的值相同),
我有以下jQuery脚本,在单击按钮时,在控制器中有一个
ActionResult
,将页面的PDF版本流到一个新窗口
然而,发生的情况如下:当第一次呈现页面时,我会收到警告:“在这里B1”和actionUrl的正确url值。
第一次单击该按钮时,我会将“in hereb2”和“undefined”警报作为url的值,并打开一个新窗口,其中未定义资源出现错误。
第三次单击按钮时,我会得到“在hereb2中”的警报和正确的url值(与
actionUrl
的值相同),并打开一个新窗口,显示预期结果。没有错误。为什么第一次单击无法访问
actionUrl
的正确值
<script type="text/javascript">
$(document).ready(function () {
alert("in hereb1");
var actionUrl = '@MvcHtmlString.Create(Html.BuildUrlFromExpressionForAreas<MyController>(c => c.GeneratePdf(Request.Url.ToString())))';
alert(actionUrl);
$("#btnPdf").click(function () {
var url = $(this).attr("href");
$(this).attr("href", actionUrl);
alert("in hereb2");
alert(url);
var win = window.open(url, "PdfVersion");
win.focus();
return false;
});
});
</script>
$(文档).ready(函数(){
警报(“在此B1中”);
var actionUrl='@MvcHtmlString.Create(Html.BuildUrlFromExpressionForAreas(c=>c.GeneratePdf(Request.Url.ToString())))”;
警报(actionUrl);
$(“#btnPdf”)。单击(函数(){
var url=$(this.attr(“href”);
$(this.attr(“href”,actionUrl);
警报(“在此B2”);
警报(url);
var win=window.open(url,“PdfVersion”);
win.focus();
返回false;
});
});
谢谢如果您试图在新选项卡/窗口中打开
actionUrl
,以下代码可能会有所帮助
$("#btnPdf").click(function () {
//var url = $(this).attr("href");
$(this).attr("href", actionUrl);
alert("in hereb2");
alert(actionUrl);
var win = window.open(actionUrl, "PdfVersion");
win.focus();
return false;
});
您的代码所做的是获取btnPdf
指向的url,并在一个新窗口/选项卡中打开url,并将btnPdf
的href
属性设置为actionUrl
,如果您试图这样做,请确保已经使用btnPdf
的属性href
提供页面设置。开关
var url = $(this).attr("href");
$(this).attr("href", actionUrl);
到
这没用,不过还是要谢谢你。然而,这篇文章的第一个答案是有效的。
$(this).attr("href", actionUrl);
var url = $(this).attr("href");