Fondamentalement, ce que cela fait est fadeIn divs préexistant, puis charge une image. Lorsque l'image est chargée, elle l'ajoute dans l'une des divs préexistantes. Ensuite, il ajoute une nouvelle div avec un identifiant de xButton. Puis plus tard $ ('# xButton'). Click() devrait cacher les 3 divs. Cependant, cela ne fonctionne tout simplement pas. Si je change le click() en #modalImage ou en #overlay, cela fonctionne mais pas pour le #xButton. Je voudrais vraiment comprendre pourquoi cela ne fonctionne pas et comment je devrais faire cela à la place. Merci.Pourquoi le .click() ne fonctionne-t-il pas dans cette instance?
$(function(){
$('#container a').click(function(e){
e.preventDefault();
var id = $(this).attr('href'),
img = new Image();
$('#overlay').fadeIn(function(){
$('#modalImage').fadeIn();
});
$(img).load(function(){
$(this).hide();
$('#modalImage').removeClass('loader').append(this);
$(this).fadeIn(function(){
var ih = $(this).outerHeight(),
iw = $(this).outerWidth(),
newH = ($(window).height()/10)*7,
newW = ($(window).width()/10)*7;
if (ih >= iw && ih >= newH) {
$(this).css('height',newH + 'px');
$(this).css('width', 'auto');
}
else if (ih >= iw && newH > ih) {
$(this).css('height', ih + 'px');
$(this).css('width', 'auto');
}
else if (iw > ih && iw >= newW) {
if ((newW/(iw/ih)) > newH) {
$(this).css('width', 'auto');
$(this).css('height', newH + 'px');
}
else {
$(this).css('width', newW + 'px');
$(this).css('height', 'auto');
}
}
else {
$(this).css('width', iw + 'px');
$(this).css('height', 'auto');
}
var padW = ($(window).width() - $(this).outerWidth())/2,
padH = ($(window).height() - $(this).outerHeight())/2;
console.log (padH + ' ' + padW);
$(this).css('top', padH);
$(this).css('left', padW);
if($('#overlay').is(":visible") == true) {
ih = ih + 4;
$('<div id="xButton">x</div>').appendTo('#modalImage');
if (padH >= 0) {
$('#xButton').css('top', padH - 4).css('right', padW - 65);
}
else {
$('#xButton').css('top', '20px').css('right', padW - 65);
}
}
});
}).attr('src', id);
});
$('#xButton').click(function(){
$(this).hide();
$('#overlay').fadeOut(function(){
$('#modalImage img').css('top', '-9999px').remove();
$('#xButton').remove();
$('#modalImage').addClass('loader');
});
});
});
Merci beaucoup pour cela. Je me suis rendu compte que c'était parce que l'élément n'existait pas sur le chargement de documents, je ne savais pas comment résoudre le problème. Merci encore – Deshiknaves
Pas de problème, j'ai été dans la même position avant! – NeonNinja