Question

... du moins à moi. Ce code utilisé pour bien fonctionner. Je suis presque sûr que rien n'a changé, mais maintenant tout d'un coup, il se comporte étrangement. Fondamentalement, j'essaie de créer des fonctionnalités d'édition en ligne. Lorsque l'utilisateur clique sur le lien, il génère dynamiquement une zone de texte et un lien Confirmer et Annuler. J'ai des problèmes avec le lien d'annulation qui ne supprime pas tout dans la cellule.

HTML:

...
<td class="bid">
   <a href="javascript:" class="102093" title="Click to modify bid">$0.45</a>
</td>
...

JQuery reliant (en $(function())):

$('.bid a').live('click', renderBidChange);
....
$('.report_table .cancel').live('click', cancelUpdate); 

renderBidChange (Cette fonction crée les éléments dynamiques):

function renderBidChange(){
    var cpc = $(this);
    var value = cpc.text().replace('$', '');
    var cell = cpc.parent('.bid');
    cpc.hide();

    var input = document.createElement('input');
    $(input).attr({type:'text',class:'dynamic cpc-input'}).val(value);
    cell.append(input);

    var accept = document.createElement('a');
    $(accept).addClass('accept').attr({'href':'javascript:',
      'title':'Accept Changes'}).text('Accept Changes');
    cell.append(accept);

    var cancel = document.createElement('a');
    $(cancel).addClass('cancel').attr({'href':'javascript:',
      'title':'Cancel Changes'}).text('Cancel Changes');
    cell.append(cancel);

    $(input).focus();
    input.select();
}

cancelUpdate Cette fonction supprime tout ce qui est visible (toutes les ordures dynamiques dans ce cas) dans la cellule et montre ce qui était là.

function cancelUpdate(){
    var cell = $(this).parent();
    cell.find(':visible').remove();
    cell.find(':hidden').show();
}

Cependant, pour une raison quelconque, le lien d'annulation reste une fois qu'il a cliqué! Tout le reste est supprimé sauf cela. WTF

Merci pour tout aperçu que vous pouvez fournir! Je suis sûr que c'est juste un petit détail stupide que je me révèle [de façon caféinée] ...

METTRE À JOUR Immédiatement après avoir publié cela, j'ai épiphancé que ce peut être un problème CSS, mais après avoir doubler mon code, ce n'est pas le cas.

Était-ce utile?

La solution

Vous avez besoin d'un léger ajustement ici:

$('.bid a:not(.cancel)').live('click', renderBidChange);

Depuis que tu as déménagé à .live(), la première fonction est également en cours d'exécution en cliquant sur Annuler :)

Autres conseils

Que se passe-t-il si vous changez:

$('.report_table .cancel').live('click', cancelUpdate); 

à

$('.bid .cancel').live('click', cancelUpdate); 

Je ne m'attends pas à une solution, mais je doublé

Quelle est la fonction "en direct" pour .ACcept? Cela fonctionne-t-il (vraisemblablement)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top