2012-10-19 72 views
0

我想用jquery显示确认对话框,但没有反应,当我点击链接这里是我有的代码,如果我把警报,我可以看到警报在准备好功能,但不是在点击:jquery确认对话框无所作为

$(document).ready(function() { 
    $("#mydialog").dialog({ 
     autoOpen: false, 
     modal: true 
    }); 
}); 
$(".myconfirmLink").click(function(e) { 
    e.preventDefault(); 
    var targetUrl = $(this).attr("href"); 
    $("#mydialog").dialog({ 
     buttons: { 
      "Yes": function() { 
       $(this).dialog("close"), window.location.href = targetUrl; 
      }, 
      "No": function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 
    $("#mydialog").dialog("open"); 
});​ 

和链接我打电话它像这样:

<div class="topToolbar"> 
        <span> <a href="/Logout.aspx" class="myconfirmLink">Log Out</a></span> 
        <div id="mydialog" title="Confirmation Required"> 
       <p> Are you sure you want to request a new pack?</p> 
      </div> 

回答

2

移动你点击的document.ready函数内部结合

$(document).ready(function() { 
    $("#mydialog").dialog({ 
     autoOpen: false, 
     modal: true 
    }); 
    $(".myconfirmLink").click(function(e) { 
     e.preventDefault(); 
     var targetUrl = $(this).attr("href"); 
     $("#mydialog").dialog({ 
      buttons: { 
       "Yes": function() { 
        $(this).dialog("close"), window.location.href = targetUrl; 
       }, 
       "No": function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 

     $("#mydialog").dialog("open"); 
    }); 
});​ 

很可能它试图将click事件绑定到元素之前它存在于dom中。它工作正常,在这里

http://jsfiddle.net/FdBTW/

1

它看起来像你设置ready功能之外单击处理程序。 $(".myconfirmLink").click(function (e) { ... });代码正在运行之前 jQuery已经准备好了。

1

他们没有错你的代码。只需将您的确认链接点击处理程序代码移动到document.ready函数中即可使其工作。