Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    12

    [jquery]problema con click function

    ciao ho una funzione che mi fa il click function e fin qui tutto bene

    codice:
            $('.punta').click(function() { 
                var value = $(this).val();
                $.ajax({
                    type: "POST",
                    url: "/clickButton",
                    data: "value=" + value,
                    dataType: "html" 
                });
            });
    ora quello che vorrei fare è renderla disponibile solo se determinati controlli vanno a buon fine
    per fare un esempio pratico

    codice:
     
     $(".punta").hover(
            function () {
                if(qualcosa){
    RENDI DISPONIBILE IL CLICK FUNCTION DI PRIMA
    }
            }, 
            function () {
    blabla
            }
            );

    ecco una cosa del genere vorrei fare,
    ho provato a dare un nome alla funzione (la prima) tipo:
    codice:
     
    function provaclick(){
      $('.punta').click(function() { 
    bla bla
    e poi a mettere il nome della funzione dentro alla condizione if, ma non so perchè cliccandoci UNA volta, e come se mi clicca 3 o 4 volte( ho visto su firebug)
    quindi penso che dovrei dichiarare la funzione in un altro modo tipo

    $.function na cosa del genere ma proprio non riesco a sistemare

    qualcuno mi può dare una mano? grazie

  2. #2
    Non ha senso fare il bind dell'evento click dentro un altro evento. Anche perchè nel tuo caso ogni volta che hover viene eseguito un nuovo click event viene associato al tuo elemento .punta, e quindi al click la callback viene eseguita tante volte quante se passato col mouse sopra all'elemento.

    Senza complicarti la vita, semplicemente lascia la callback per il click come nel tuo primo esempio e prima di fare qualunque altra cosa verifichi il tuo if(qualcosa) e semplicemente fai return true se il resto non deve essere eseguito.
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    12
    codice:
     $(".punta").hover(
            function () {
                var value = $(this).val();
                var idPulsante = $(this).attr("id");
    
                if(value != 0){
                    $.ajax({
                        type: "POST",
                        url: "/url",
                        dataType: "html",
                        success: function(msg)
                        {
                         
                            if(msg == 0){
    
                                $('#'+idPulsante).html('messaggio').click(function() { 
                                    location.href = "/url2";
                                });
                                return true;
                            }else{
                                
    $('#'+idPulsante).click(function() { 
    var id = $(this).val();
    
    $.ajax({
    type: "POST",
    url: "/url3",
    data: "id=" + id,
    dataType: "html"
    
    });
    
    });
    return true;
                            }
                        }
                    });
            
                }else{
        
                    $(this).html('Login').click(function() { 
                                    location.href = "/login";
                                });;
                }
    
    
            }, 
            function () {
                $(this).html('Punta');
            }
            );

    ho provato a mettere cosi, pero' succede uno strano errore
    ti spiego
    quando passo sopra con il mouse faccio dei controlli, e in base alla risposta eseguo una condizione
    se è un tipo di condizione mi deve rendere disponibile anche il click
    ora succede che se passo con il mouse 10 volte e poi clicco una volta, in firebug mi esce che ho cliccato 10 volte......non capisco perchè......


    cioè e come se si va ad accodare, tante quante volte passo sopra col mouse, tante volte partirà la funzione click $('#'+idPulsante).click(function() {

  4. #4
    Devo avere dei problemi a spiegarmi...


    Lascia perdere di "rendere disponibile il click" nella callback dell'hover! Ogni volta che nell'hover tu credi di rendere disponibile il click in realtà stai creando una nuova callback per il click event che viene accodata alle altre, quindi poi quando clicki sono eseguite tutte.

    La logica deve essere questa:

    codice:
    var value = -1;
    $('.punta').on('click', function(){
     if(value!=0){//$.ajax...}
    });
    $('.punta').hover( function(){
     //setta il valore di value come ti serve
    });
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.