2015-03-06 1 views
1

Si les conditions suivantes changent le lien, si Chien ou Chat se trouve dans une liste?jQuery ne fonctionne pas, ne fonctionne pas pour moi

var mtarget = $('#jqwlclink'); //the target link that will change only if dog or cat exist for mlink element. 


if (mtarget.length) { 

$("#profile-bottom .pleft .mlink").each(function() { 
     if (!$(this).is(':contains("Dog"),:contains("Cat")')) { 
     mtarget.attr("href", "http://different-page/"); 
     } 
    }); 

} 

pour quelque raison que ce qu'il est en train de changer encore le href de mon objectif, même si on trouve des chiens et chats dans $(this).

Mon HTML ressemble à ceci ..

<div class="pleft"> 
    <span class="ph3">My Account</span> 
    <a class="mlink dots" href="/dog">Item One - Dog</a> 
    <a class="mlink dots" href="/cat">Item Two - Cat</a> 
</div> 

Le code HTML de la cible qui changera potentiellement ...

<a id="jqwlclink" href="/initial-page/">Status</a> 

Merci pour toutes suggestions

+2

Comment voulez-vous modifier la page? Les mots ('' cat'' ou '' dog'') devraient-ils apparaître dans le 'href' ou dans le texte? Ou les deux? –

+0

Savez-vous si la partie 'is' fonctionne correctement? c'est-à-dire '$ (this) .is (': contains (" Dog "),: contains (" Cat ")')' return vrai pour votre cas? –

+0

"* [Cela devrait] modifier le href basé sur l'existence de l'une ou l'autre des valeurs de texte apparaissant *" - comment? –

Répondre

0

J'utiliser régulièrement expression à la place (demo):

$(function() { 
    var mtarget = $('#jqwlclink'); //the target link that will change only if dog or cat exist for mlink element. 

    var dogCatRegexp = /(dog|cat)/i; 

    if (mtarget.length) { 
     $("#profile-bottom .pleft .mlink").each(function() { 
      var txt = $(this).text(); 
      if (!dogCatRegexp.test(txt)) { 
       mtarget.attr("href", "http://different-page/"); 
      } 
     }); 
    } 
});