2012-09-17 36 views
7

Tại sao sau đây không thay đổi văn bản thành liên kết?Đối với mỗi liên kết trong đó href = 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> 

Gỡ lỗi dường như không nhận giá trị href.attr nhưng tôi có thể chắc chắn rằng ai đó có thể đảm bảo tôi đã thực hiện chính xác ở trên không?

Trả lời

11

i là chỉ số của phần tử, bạn muốn phần tử và nên sử dụng nên sử dụng một cái gì đó như:

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

Ngoài ra, tôi đã thay đổi .innerHtml()-.html("content in here"). Để cập nhật HTML bên trong thẻ <a></a> trả về (element).

Kiểm tra điều này JSFiddle. http://jsfiddle.net/2scug/1/

+0

Chấp nhận của bạn khi bạn giải thích các tham số phần tử và chỉ mục cho tôi. – Anicho

4

Thử:

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

Cảm ơn bạn đã hiển thị thông số phần tử, nhưng câu trả lời của @JustAnil giải thích "v" chấp nhận câu trả lời của mình là câu trả lời đã giải quyết được vấn đề của tôi. – Anicho

+1

@Anicho ok, vui lòng hữu ích theo cách nào đó ;-) –

5

Nó có thể ngắn hơn để viết nó như:

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

Ngoài ra còn có một lý do tại sao jQuery có) chức năng (html. Nó dọn dẹp tất cả các rò rỉ bộ nhớ càng tốt và sau đó sử dụng innerHTML trong nội bộ để thiết lập giá trị bạn cần ;-)

5

Corrected:

//JAVASCRIPT/JQUERY: 

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

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

1

Ở đây tôi đã làm thùng đầy đủ cho trên vấn đề. bạn có thể kiểm tra liên kết giới thiệu ở đây

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

Các vấn đề liên quan