2010-09-07 7 views
0

click() d'ancrage entre autres choses que j'ai ce contenu html dans ma page de contenu:problème jquery avec la méthode

<asp:Content ID="Content2" ContentPlaceHolderID="HeadContent" runat="server"> 
<script type="text/javascript"> 
    $("[ID$=panelDetail]").dialog({ 
     autoOpen: false 
     , resizable: false 
     , height: 'auto' 
     , width: 'auto' 
     , modal: true 
     , overlay: { opacity: 0.8, background: "black" } 
    }); 

    function loadDialog(action) { 
     $("[ID$=panelDetail]").dialog('open'); 
     $.ajax({ 
      type: "POST", 
      dataType: "HTML", 
      url: action, 
      data: {}, 
      success: function(response) { 
       $("#panelDetail").html(''); 
       $("#panelDetail").html(response); 
      } 
     }); 
    } 

    $("[ID$=btnAdd]").click(function() { 
     alert("click on add"); 
     loadDialog("/Foro/Create", ""); 
    }); 
</script> 
</asp:Content> 

J'ai ensuite ces fragments HTML dans deux sections séparées

<asp:Content ID="Content1" ContentPlaceHolderID="BodyContent" runat="server"> 
    <div id="panelDetail" style="display:none" title="Panel Title"></div> 
</asp:Content> 

<asp:Content ID="Content4" ContentPlaceHolderID="RightPanel" runat="server"> 
    <a href="#" id="btnAdd">Add new</a> 
    <a href="#" id="btnEdit">Edit</a> 
</asp:Content> 

Pourquoi alerte à l'intérieur de la balise ne se fait jamais appeler ???

Merci de votre aide!

Répondre

2

Vous devez envelopper vos appels dans un appel document.ready, comme ceci:

$(function() { 
    $("a[ID$=btnAdd]").click(function() { 
    alert("click on add"); 
    loadDialog("/Foro/Create", ""); 
    }); 
}); 

Sinon, les éléments ne sont pas là pour être encore trouvé :) document.ready gestionnaires feu à pleine charge de la DOm, par exemple vos liens sont là pour être trouvés.

Dans le cas de UpatePanels, passer à .live(), comme ceci:

$(function() { 
    $("a[ID$=btnAdd]").live('click', function() { 
    alert("click on add"); 
    loadDialog("/Foro/Create", ""); 
    }); 
}); 
+0

Vous avez raison. Je me sens stupide, maintenant. Je vous remercie! Juste une curiosité: est-ce que "$ (function() {})" est un raccourci pour "$ (document) .ready (function() {})"? – Lorenzo

+0

@Lorenzo - vivre et apprendre, tant que vous ne le vivez pas * après * l'apprendre que vous faites très bien :) –

+0

@Lorenzo - Oui, c'est correct, ils sont interchangeables, je tape juste plusieurs fois dans un jour, donc je préfère la version courte personnellement. –