2012-09-17 11 views
7

Perché il seguente testo non viene modificato?Per ogni collegamento in cui href è uguale a myValue

//JAVASCRIPT/JQUERY: 

$('a').each(function(i) { 
    if($(i).attr("href") == "mywebsite.co.uk") 
    { 
     $(i).innerHTML = "It Worked!"; 
    } 
}); 


//HTML: 

<a href="mywebsite.co.uk"></a> 

debugging non sembra prendere il value.attr href ma può essere sempre sbagliato tutto qualcuno può essere sicuro di avere la precedenza correttamente fatto?

risposta

11

i è l'indice dell'elemento, si desidera che l'elemento e dovrebbe usare dovrebbe usare qualcosa di simile:

// The first argument is the index, the second is the element 
$('a').each(function(index, element) { 
    if($(element).attr("href") == "mywebsite.co.uk") 
    { 
     $(element).html("It Worked!"); // Change this to .html() 
    } 
    console.log('Index is:'+index+', Element is'+element); 
});​ 

<a href="mywebsite.co.uk"></a> 

Inoltre, ho cambiato il .innerHtml()-.html("content in here"). Per aggiornare l'HTML all'interno del tag <a></a> restituito (element).

Controllare questo JSFiddle. http://jsfiddle.net/2scug/1/

+0

Accettare il tuo come hai spiegato i parametri di elemento e indice per me. – Anicho

4

Prova ora:

$('a').each(function(i,v) { 
    console.log(); 
    if($(v).attr("href") == "mywebsite.co.uk") 
    { 
     $(v).html('It worked!'); 
    } 
}); 
+0

Grazie per aver mostrato il parametro elemento, ma la risposta di @JustAnil ha spiegato che cosa "v" sta accettando come risposta che ha risolto il mio problema. – Anicho

+1

@Anicho ok, felice di essere utile in qualche modo ;-) –

5

Può essere più breve per scrivere come:

$('a[href="mywebsite.co.uk"]').each(function() { 
    $(this).html("It Worked!"); 
}); 

C'è anche una ragione per la quale ha funzione di jQuery html(). Pulisce tutte le possibili perdite di memoria e quindi utilizza internamente innerHTML per impostare il valore è necessario ;-)

5

Corretto:

//JAVASCRIPT/JQUERY: 

$('a').each(function(i) { 
    if($(this).attr("href") == "mywebsite.co.uk") 
    { 
     $(this).html("It Worked!"); 
    } 
}); 

jsFiddle: http://jsfiddle.net/kAWdy/

1

Qui ho fatto cassonetti completi per sopra problema. è possibile controllare collegamento demo qui

Demohttp://codebins.com/bin/4ldqp75/1/For%20each%20link%20where%20href%20equal

<a href="mywebsite.com"> 
</a> 
<a href="mywebsite.co.uk"> 
</a> 
<a href="mywebsite.us"> 
</a> 
<a href="mywebsite.in"> 
</a> 
<input type="button" id="btn1" value="Get Text"/> 

jQuery:

$(function() { 

    $("#btn1").click(function() { 
     $("a").each(function() { 
      if ($(this).attr('href').trim() == "mywebsite.co.uk") { 
       $(this).html("UK Website Link"); 
      } else { 
       $(this).html("Website Link"); 
      } 

     }); 
    }); 

}); 

CSS

a{ 
    display:block; 
} 
input[type=button]{ 
    margin-top:10px; 
} 

Demohttp://codebins.com/bin/4ldqp75/1/For%20each%20link%20where%20href%20equal

Problemi correlati