Sto realizzando un album di immagini ordinabili e ridimensionabili. Lì, sto cercando di aggiungere una funzionalità per creare l'immagine come collegamento.Come verificare se è stata selezionata la stessa immagine o un'altra immagine o qualcosa di diverso dall'immagine
immagine viene cliccato
Poi avvolgere l'immagine con un div che visualizza un pulsante Modifica in cima a quello dell'immagine.
- E quando si fa clic sul pulsante di modifica, viene visualizzata una finestra di dialogo per inserire l'url e il nome per quell'immagine.
- E quindi avvolgere l'immagine con un
a tag
con l'url e il nome specificati.
Demo a jsfiddle
Questo è ok. Ma quello che vorrei fare è:
- Se si fa clic sulla stessa immagine, non spostare di nuovo il div di modifica.
- Solo se si fa clic su una nuova immagine, avvolgere il div di modifica.
- E se si fa clic su un elemento diverso dall'immagine, rimuovere il div di modifica.
Come posso ottenere questo risultato? Penso che unwrap() farà il trucco per rimuovere il div di editing dall'immagine, ma come faccio a sapere se è la stessa immagine o qualcosa di diverso da quello?
js snippet:
$('#sortable li img').on("click", function() {
$image = $(this);
image_resize($image);
edit_image($image);
});
function edit_image(image) {
image.wrap('<div id="edit-image"></div>');
$('#edit-image').prepend('<a href="#">EDIT</a>');
$("#edit-image a").center(true).css("cursor", "pointer").css("z-index", "1");
$('#edit-image a').on("click", function() {
alert("clicked on edit");
if (image.parent().is("a")) {
var img_link = image.parent().attr("href");
var img_name = image.parent().attr("alt");
$('#image_link_dialog #input #link').val(img_link);
$('#image_link_dialog #input #name').val(img_name);
}
$('#image_link_dialog').css("display", "block").css("z-index", "2");
$('#image_link_dialog').center(false);
$('#image_link_dialog').draggable();
});
$('#image_link_dialog .dialog_handle a').on("click", function() {
if (!$('#image_link_dialog #input #name').val() == '') {
var img_name = $('#image_link_dialog #input #name').val();
console.log('img_name: ' + img_name);
}
if (!$('#image_link_dialog #input #link').val() == '') {
var img_link = $('#image_link_dialog #input #link').val();
console.log('img_link: ' + img_link);
if (img_name) {
if (image.parent().is("a")) {
image.parent().attr("alt", img_name);
image.parent().attr("href", img_link);
} else {
image.wrap(function() {
return "<a class='img_a' href='" + img_link + "' alt='" + img_name + "'></a>";
});
}
} else {
if (image.parent().is("a")) {
image.parent().attr("href", img_link);
} else {
image.wrap(function() {
return "<a class='img_a' href='" + img_link + "'></a>";
})
}
}
} else {
alert('please enter link url');
}
$('#image_link_dialog #input #link').val('');
$('#image_link_dialog #input #name').val('');
$('#image_link_dialog').css("display", "none");
})
}
Basta assegnare un attributo è possibile controllare – WhiteHat
@WhiteHat Come? Quale attributo? –
@TikliTaba aggiunge semplicemente una classe o un attributo come "wrapped" o "edit-mode" e controlla quello nella funzione click handler. Se l'attributo o la classe che aggiungi è disponibile, non eseguire il wrap. – Araknid