2011-02-18 3 views
0

Y at-il des raisons pour lesquelles cela ne fonctionne pas:jQuery - événement déclencheur de l'intérieur iFrame sur le document parent

document parent

$(document).ready(function($) { 
     $('.upload-media').click(function(){ 
      if($(this).parent().find('iframe')[0]) 
       return false; 
      $(this).parent().append('<iframe class="media-iframe" src="'+this.href+'"></iframe>'); 
      var ifr = $(this).parent().find('iframe'); 
      $(document).bind('closeFrame', function(){ alert("event"); }); 
      return false; 
     }); 
    }); 

iFrame

$(document).ready(function() { 
    $("#media-frame-close").click(function(){ 
     window.parent.$(window.parent.document).trigger('closeFrame'); 
     return false; 
    }); 
}); 

Semble assez Tout droit, j'ai essayé parent. au lieu de window.parent et cela ne fonctionne pas non plus :(

+0

Qu'est-ce l'erreur? –

+0

Je n'ai pas d'erreur, c'est juste de ne pas déclencher l'alerte :( – Hanpan

+0

est le chargement iframe? Pouvez-vous poster la source complète de l'iframe? – Oliver

Répondre

2

Je n'ai pas réussi à trouver un moyen d'accéder au déclencheur jQuery pour le document, mais si vous faites ce qui suit, vous pouvez obtenir la même chose.

$(document).ready(function(){ 
    $('.frame').click(function(){ 
     if($(this).parent().find('iframe')[0]) 
     { 
      return false; 
     } 

     $(this).parent().append('<iframe class="media-iframe" src="'+this.href+'"></iframe>'); 

     var ifr = $(this).parent().find('iframe'); 

     // Adding function directly to the document rather than using jQuery.bind/trigger 
     document.closeFrame = function(){ alert("event"); }; 

     return false; 
    }); 
}); 

$(document).ready(function(){ 
    $("#media-frame-close").click(function(){ 
     window.parent.document.closeFrame(); 
     return false; 
    }); 
}); 

bien sûr, ce pollue l'objet de document, mais il fera ce que vous voulez.

1

top.document fonctionne bien d'un iframe (en présumant iframe a aussi jQuery)

$('#ID', top.document).someFunction(); 
Questions connexes