Foros del Web » Programando para Internet » Javascript »

Botón añadir a favoritos (No los del navegador)

Estas en el tema de Botón añadir a favoritos (No los del navegador) en el foro de Javascript en Foros del Web. Buenas noches... Veréis tengo una duda, estoy creando un botón de favoritos, quiero que al pulsar añada la id que le indico por rel y ...
  #1 (permalink)  
Antiguo 17/10/2013, 15:35
 
Fecha de Ingreso: octubre-2011
Ubicación: Zahara, Sevilla, Granada...
Mensajes: 12
Antigüedad: 12 años, 6 meses
Puntos: 0
Pregunta Botón añadir a favoritos (No los del navegador)

Buenas noches...

Veréis tengo una duda, estoy creando un botón de favoritos, quiero que al pulsar añada la id que le indico por rel y que se quite "añadir a favoritos" y aparezca "quitar de favoritos", hasta aquí lo hace.

El problema viene luego que le pulso en "quitar de favoritos" la cual se modifico la class css mediante jquery, pero sigue llamando a la primera funcione .love_input aunque en el inspector de código aparece .love_eliminar (obviamente sin el punto).

El php funciona.

Otro dato a destacar es que salta el primer alert, el segundo
Código:
 alert( "Se guardaron los datos: " + datos + id)
no.

Aquí os dejo el código.

Muchas gracias!!!
Código:
 $('.love_input').click(function(e) {
       e.preventDefault()
       var id = $(this).attr("rel");
       $(this).text("Quitar de favoritos!");
       $(this).removeClass( "love_input");
       $(this).addClass( "love_eliminar");

	        $.ajax({
	            type: "GET",
	            url: "/ajax/love-ventas.php",
	            data: "id="+id,
	            success: function(datos){
		           	$(function() {
		    		
			    	});
		            return false;
		            alert( "Se guardaron los datos: " + datos + id)
	            }
	        });
       });



   $('.love_eliminar').click(function(e) {
       e.preventDefault()
       var id = $(this).attr("rel");
       $(this).text("Añadir a favoritos!");
       $(this).removeClass( "love_eliminar");
       $(this).addClass( "love_input");

	        $.ajax({
		            type: "GET",
		            url: "/ajax/love-ventas-clean.php",
		            data: "id="+id,
		            success: function(datos){
			           	$(function() {
			    		
				    	});
			            return false;
			            alert( "Se guardaron los datos: " + datos + id)
		            }
		        });
       });

Última edición por enmaska; 17/10/2013 a las 15:37 Razón: Aclaración en título
  #2 (permalink)  
Antiguo 18/10/2013, 08:20
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Botón añadir a favoritos (No los del navegador)

recuerda que ajax es asincrono, por el cual deberías de colocar las lineas dentro del onredaystatechange (success para jQuery) que cambian el objeto del botón.

otro punto es que no deberías asignar el evento sobre la clase del botón, ya que al cambiarla no quita el evento, recuerda que lo que hace jQuery es buscar todos los elementos con la clase y les asigna el evento al elemento, NO a la clase, así que el mismo se conserva aún quites la clase, por lo que deberías de usar el botón para el evento y discriminar con la clase que tenga en dicho momento que acción ejecutar.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 21/10/2013, 14:43
 
Fecha de Ingreso: octubre-2011
Ubicación: Zahara, Sevilla, Granada...
Mensajes: 12
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Botón añadir a favoritos (No los del navegador)

Muchas gracias. Al final lo solucioné de otra forma, actualicé la librería jquery, estaba gastando la 1.4 y además cambié

$('.love_input').click(function(e) {

por esto otro

$(document).on('click', '.love_eliminar', function(e) {


Logrando así hacer su cometido, se que no está muy pulido, pero cumple su cometido. Si alguien se anima a mejorarlo.

Os dejo el código:


Código:
    $(document).on('click', '.love_input', function(e) {
	    e.preventDefault()
        var id = $(this).attr("rel");
        var action = $(this).attr("data-action");
        
        
        $(this).text("Quitar de favoritos!");
        $(this).removeClass( "love_input");
        $(this).addClass( "love_eliminar");
        
	        $.ajax({
	            type: "GET",
	            url: "/ajax/love-ventas.php",
	            data : {
				      id : id,
				      action : action
				  },
	            
	            success: function(datos){
		           	$(function() {
		    		
			    	});
		            return false;
	            }
	        });
	        console.log("GUARDADO!! --> " +id );
        });



//borrar love
    $(document).on('click', '.love_eliminar', function(e) {
        e.preventDefault()
        var id = $(this).attr("rel");
        $(this).text("Añadir a favoritos!");
        $(this).removeClass( "love_eliminar");
        $(this).addClass( "love_input");
        
	        $.ajax({
		            type: "GET",
		            url: "/ajax/love-ventas-clean.php",
		            data: "id="+id,
		            success: function(datos){
			           	$(function() {
			    		
				    	});
			            return false;
		            }
		        });
		        console.log("ELIMINADO!! --> " +id );
        });

Etiquetas: ajax, boton, funcion, input, jquery, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:41.