tengo este codigo:
<div id="product_<?php echo $product->id; ?>"></div>Este es el código ajax js:
$(function () { $('.expand').on('click', function (e) { e.preventDefault(); var token = "<?php echo $this->security->get_csrf_token_name(); ?>"; var hash = "<?php echo $this->security->get_csrf_hash(); ?>"; var productID = $(this).data("id"); $.ajax({ type: 'GET', dataType: 'html', url: 'marketplaces/marketplaces/test_expand', data: { product_id: productID, token: hash }, beforeSend: function () { }, success: function (data, textStatus) { $("#product_" + productID).html(data); }, error: function (xhr, textStatus, errorThrown) { alert('request failed'); }, complete: function () {}, }); }); });Y este botón:
<div data-id="<?php echo $product->id; ?>" class="expand"> <a href="#" class="bt btn-primary btn-sm">Offers <i class="fas fa-chevron-down"></i> </a> </div> Cuando hago clic en el botón div con id=product_(ID) , me muestra datos de ajax. ¡Esta funcionando! ¡Quiero ocultar este div cuando vuelva a hacer clic en el botón!
¿Como es posible? ¡Gracias!
$('[id-datos=ID_producto]').hide();
Creo que puedes usar este código. Espero ser útil para usted.
Puede poner una condición con un código personalizado para mostrar la funcionalidad de ocultar.
Aquí está el código de ejemplo:
$(function () { $('.expand').on('click', function (e) { e.preventDefault(); var currBoxObj = this; var token="<?php echo $this->security->get_csrf_token_name(); ?>"; var hash="<?php echo $this->security->get_csrf_hash(); ?>"; var productID = $(this).data("id"); if(!$(currBoxObj).hasClass("showingblock")){ $.ajax({ type: 'GET', dataType: 'html', url: 'marketplaces/marketplaces/test_expand', data: { product_id: productID, token: hash }, beforeSend: function () { }, success: function (data, textStatus) { $(currBoxObj).addClass("showingblock"); $("#product_"+productID).show(); $("#product_"+productID).html(data); }, error: function (xhr, textStatus, errorThrown) { alert('request failed'); }, complete: function () { }, }); }else{ $("#product_"+productID).hide(); $(currBoxObj).removeClass("showingblock"); } }); });Debes agregar una clase al elemento cuando lo abras.
$("#product_" + productID).addClass('is-open')
Luego verifique si tiene la clase en el segundo clic (arriba de la llamada ajax)
if ($("#product_" + productID).hasClass('is-open')) { $("#product_" + productID).hide().removeClass('is-open') return }Si desea cerrar todo antes de abrir uno, entonces es trivial hacerlo:
$('.is-open').hide().removeClass('is-open')