2012-09-17 8 views
7

¿Por qué lo siguiente no cambia el texto para que funcione?Para cada enlace donde href es igual 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> 

depuración que no parece recoger el value.attr href pero se me puede conseguir todo mal por favor alguien puede asegurarse de que tengo lo anterior correctamente hecho?

Respuesta

11

i es el índice del elemento, desea que el elemento y debe utilizar debe usar algo como:

// 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> 

Además, he cambiado el .innerHtml()-.html("content in here"). Para actualizar el código HTML dentro de la etiqueta devuelta <a></a>(element).

Compruebe esto JSFiddle. http://jsfiddle.net/2scug/1/

+0

Aceptando su como me explicó el elemento y los parámetros de índice para mí. – Anicho

4

Práctica:

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

Gracias por mostrar el parámetro de elemento, pero la respuesta de @JustAnil explicó qué "v" es así que acepta su respuesta como la que resolvió mi problema. – Anicho

+1

@Anicho ok, feliz de ser útil de alguna manera ;-) –

5

Puede ser más corto para escribir como:

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

También hay una razón por la cual tiene la función de jQuery html(). Se limpia todas las posibles pérdidas de memoria y luego utiliza innerHTML internamente para establecer el valor que necesita ;-)

5

Corregido:

//JAVASCRIPT/JQUERY: 

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

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

1

Aquí he hecho contenedores completos para arriba problema. se puede comprobar enlace de demostración aquí

demostraciónhttp://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; 
} 

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

Cuestiones relacionadas