单击一个按钮在第一次单击时没有正确绑定,但在第二次单击时正确绑定

时间:2011-03-16 06:20:04

标签: jquery jquery-ui javascript-events asp.net-mvc-3


我正在使用VS2010,MVC3 我有以下jquery脚本,点击一个按钮,在控制器流中有一个ActionResult,将页面的pdf版本改为一个新窗口。
但是,这是发生的事情:
首次呈现页面时,我收到警报:“in hereb1”和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>

由于

2 个答案:

答案 0 :(得分:0)

如果您尝试在新标签/窗口中打开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的网址并在新窗口/标签中打开网址,并将href的{​​{1}}属性设置为{{ 1}}如果您尝试这样做,请确保已设置btnPdf的属性actionUrl alredy已设置的页面。

答案 1 :(得分:0)

切换

var url = $(this).attr("href");
$(this).attr("href", actionUrl);

$(this).attr("href", actionUrl);
var url = $(this).attr("href");