2010-07-10 4 views
2

J'ai plusieurs endroits sur la page où il y a du texte "Ajouter" Ce texte est dans une balise td qui est juste au-dessus d'une entrée avec type = "hidden" et name = "ProductCode" EDIT: I veux supprimer le bouton « Ajouter » de chaque balise tdtexte retiré de td

Je pense que je besoin de quelque chose comme

$("input:checkbox[name='ProductCode']").this('td').each.text('Add').remove; 

Cela jette évidemment et erreur et je ne sais pas si je suis même près note:.. I seulement vouloir cibler ces derniers et aucun autre texte sur la page qui peut avoir "Ajouter"

<td valign="top">Add<input type="hidden" value="xxxxxxx" name="ProductCode"></td> 
<td valign="top">Add<input type="hidden" value="yyyyyyy" name="ProductCode"></td> 
<td valign="top">Add<input type="hidden" value="zzzzzzz" name="ProductCode"></td> 

Répondre

2

Pour la syntaxe correcte, lisez le jQuery documentation.

Pour votre problème spécifique

$('td:has(>:input[name=ProductCode][type=hidden])').html(
    function(index, oldhtml){ return oldhtml.replace('Add',''); } 
); 

Mise à jour pour éviter les cas où le texte commençant par Ajouter se foiré ..

$('td:has(>:input[name=ProductCode][type=hidden])') 
    .each(
     function(){ 
      var txt = $(this).contents()[0]; 
      if(txt.nodeType===3 && $(txt).text()=='Add') 
       $(txt).remove(); 
     }); 
+0

Et que se passe-t-il si, par exemple, le texte 'td' est" Address "? – LukeH

+0

Je suis d'accord avec LukeH, pourquoi toutes ces réponses sont-elles si spécifiques au mot 'Ajouter'? La question dit que le texte doit être supprimé, mais ne spécifie pas que les autres mots doivent être laissés inchangés. Je suppose que tout texte qui s'y trouve devrait être supprimé, car c'est le cas le plus simple. – JAL

+0

Dans ce cas, Add est le seul texte qui sera dans ce td. Il n'y aura jamais aucune "adresse" dans ce ou ces td – user357034

1

Ce code vous aidera à:

$(document).ready(function() { 
    $("td:contains(Add) input[name=ProductCode]:hidden").parent().each(function(){ 
    var el=$(this); // Get the element 

    el.html(el.html().replace(/^Add</g,'<')); // Remove the Add 
    }); 
}); 
1

Cela va marcher:

$("input[name='ProductCode'][type=hidden]").parent().each (
    function() { 
     $(this)[0].innerHTML = $(this)[0].innerHTML.replace (/Add/i, ''); 
    } 
); 
+0

Celui-ci fonctionne mais wow tout ce code juste pour enlever quelques txt, lol – user357034

+0

Et que se passe-t-il si, par exemple, le texte 'td' est" Adresse "? – LukeH

+0

@ user357034: Hein? C'est la même quantité de code (généralement moins) que les autres réponses. Je l'ai juste formaté avec plus d'espace par les guides de style de ma maison. –

0
$("td:has(input[name=ProductCode]:hidden)").each(function(){ 
    $(this).contents().first().remove(); 
}); 

Voir ce here.

+0

Essayé et cela ne fonctionne pas. – user357034

+0

Qu'est-ce qui ne va pas? Cela fonctionne dans le violon. – melhosseiny

+0

Pourquoi ça ne marche pas Je ne sais pas mais c'est peut-être parce qu'il y a d'autres td sur la page ou mon code est imbriqué. Je suppose que si le code est autonome, cela fonctionnera mais pas dans mon cas particulier. Mais merci! – user357034

0
$('td:contains(Add) > :input[name=ProductCode]:hidden').each(function() { 
    var prev = this.previousSibling; 
    if (prev && (prev.nodeType === 3) && prev.nodeValue.match(/^\s*Add\s*$/)) { 
     $(prev).remove(); 
    } 
}); 
+0

J'ai essayé cela aussi et je n'ai pas travaillé. – user357034