Jquery 单击按钮在第一次单击时未正确绑定,但在第二次单击时已正确绑定

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的值相同),

我正在使用VS2010、MVC3。
我有以下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");