Question

Je ne comprends pas pourquoi cet appel confirm () est déclenché même si j'ai appuyé sur "non". Pouvez-vous me dire ce que je fais mal?

$('.deleteButton').livequery('click',function(){
        if(confirm('Are you sure?')){
            return true;
        }else
        {
            return false;
        }
        return false;
    });

Le balisage HTML:

<a class="smallbutton deleteButton" href="users.php?todo=delete&id=32">delete</a>

J'ai vérifié et la valeur renvoyée était false, mais la page redirige toujours la valeur A href sur laquelle vous avez cliqué. Normalement, si je retourne faux, cela ne devrait pas, non?

Était-ce utile?

La solution 3

Je suis désolé: il s’avère que j’attachais un autre comportement à toutes les ancres du conteneur de contenu principal. J'ai ajouté une clause d'exclusion pour deleteButton et cela fonctionne bien maintenant.

Voici mon code final, fonctionnel:

var $tabs= $("#tabs").tabs({
        fx: {
            opacity: 'toggle'
        },
        load: function(event, ui) { 

            $('a', ui.panel).livequery('click',function() {

                // we need to exclude the listNav buttons AND deleteButton buttons from this behavior

                if($(this).parent().is(':not(".ln-letters")') && $(this).is(':not(".deleteButton")')){

                    $(ui.panel).load(this.href);
                    return false;
                }
            });
        }
    });

Et le comportement du bouton de suppression fonctionne avec un simple:

$('.deleteButton').live('click',function(e){
    return confirm('Are you sure?');
});

Autres conseils

<a id="myId_1" href="#" class="deleteButton">delete</a>

$('.deleteButton').livequery('click',function(e){
        e.stopPropagation();
        if(confirm('Are you sure?')){
            functionForDelete($(this).attr("id").split("_")[1]);
        }
});

// OR ir you like goto href

<a id="myId1" href="url/delete/id.php?1" class="deleteButton">delete</a>
$('.deleteButton').livequery('click',function(e){
        e.stopPropagation();
        if(confirm('Are you sure?')){
            window.location=$(this).attr("href");
        }
});

Changez livequery () en live (). jQuery prend en charge les mêmes fonctionnalités. Je viens de tester en FF et cela a fonctionné avec live () mais ne m’a jamais même donné une invite avec livequery ()

Essayez ceci:

$('.deleteButton').livequery('click',function(e){
    if (confirm('Are you sure?')) {
        return true;
    } else {
        if (e.preventDefault) {
            e.preventDefault();
        } else {
            e.returnValue = false;
        }
        return false;
    }
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top