Cài đặt thuộc tính trong thời gian chạy


202

Cách tốt nhất để đặt hrefthuộc tính của <a>thẻ khi chạy bằng jQuery là gì?

Ngoài ra, làm thế nào để bạn có được giá trị của hrefthuộc tính của <a>thẻ bằng jQuery?

Câu trả lời:


378

Để có được hoặc đặt thuộc tính của một phần tử HTML, bạn có thể sử dụng element.attr()hàm trong jQuery.

Để có được thuộc tính href , hãy sử dụng đoạn mã sau:

var a_href = $('selector').attr('href');

Để đặt thuộc tính href , hãy sử dụng mã sau:

$('selector').attr('href','http://example.com');

Trong cả hai trường hợp, vui lòng sử dụng bộ chọn thích hợp. Nếu bạn đã đặt lớp cho phần tử neo, hãy sử dụng '.class-name'và nếu bạn đã đặt id cho phần tử neo, hãy sử dụng '#element-id'.


1
Tôi đã sử dụng điều này để có được href. cảnh báo ($ ("# Publish-link"). attr ("href")); Và nó cho tôi cảnh báo "không xác định".
gautamlakum

3
nó có thể có nghĩa là liên kết xuất bản của bạn là một lớp chứ không phải là một id. thử: alert ($ (". Publish-link"). attr ("href")); thay vào đó
jim BOTan

3
@ lakum4stackof: Sẽ hữu ích nếu bạn đăng chính xác thẻ <a> bạn đang sử dụng ở đây :)

à xin lỗi bạn đúng rồi. Tôi đã áp dụng lớp và tôi đã sử dụng '#' trong mã jquery. nó hoạt động với cảnh báo ($ (". Publish-link"). attr ("href")); Cám ơn rất nhiều. :)
gautamlakum

18

Trong jQuery 1.6+, tốt hơn là sử dụng:

$(selector).prop('href',"http://www...")để đặt giá trị và

$(selector).prop('href')để có được giá trị

Nói tóm lại, .proplấy và đặt các giá trị trên đối tượng DOM , và .attrlấy và đặt các giá trị trong HTML . Điều này làm cho .propmột chút nhanh hơn và có thể đáng tin cậy hơn trong một số bối cảnh.


1
đồng ý '.prop' sẽ nhận được đường dẫn đầy đủ như: http: //www.../index.html trong khi .attr sẽ chỉ nhận được: 'index.html'
DevWL

14

Đặt hrefthuộc tính với

$(selector).attr('href', 'url_goes_here');

và đọc nó bằng cách sử dụng

$(selector).attr('href');

Trong đó "bộ chọn" là bất kỳ bộ chọn jQuery hợp lệ nào cho <a>phần tử của bạn (".myClass" hoặc "#myId" để đặt tên cho các bộ chọn đơn giản nhất).

Hi vọng điêu nay co ich !


Tôi đã sử dụng điều này để có được href. cảnh báo ($ ("# Publish-link"). attr ("href")); Và nó cho tôi cảnh báo "không xác định".
gautamlakum

@ lakum4stackof rất có thể bạn đã thực thi mã cảnh báo đó TRƯỚC KHI bạn đặt hrefthuộc tính của mình , giả sử bộ chọn của bạn là chính xác.
Valentin Flachsel

2
thử: alert ($ (". Publish-link"). attr ("href")); vì phần tử của bạn có thể là một lớp chứ không phải là id. thực tế, có thể sử dụng $ (cái này) nếu nó nằm trong sự kiện của bạn
jim BOTan

2

So sánh thử nghiệm hiệu suất nhỏ cho ba giải pháp:

  1. $(".link").prop('href',"https://example.com")
  2. $(".link").attr('href',"https://example.com")
  3. document.querySelector(".link").href="https://example.com";

nhập mô tả hình ảnh ở đây

Tại đây bạn có thể tự thực hiện kiểm tra https://jsperf.com/a-href-js-change


Chúng ta có thể đọc giá trị href theo những cách sau

  1. let href = $(selector).prop('href');
  2. let href = $(selector).attr('href');
  3. let href = document.querySelector(".link").href;

nhập mô tả hình ảnh ở đây

Tại đây bạn có thể tự thực hiện kiểm tra https://jsperf.com/a-href-js-read


Đẹp! Điều kỳ lạ là tôi đang nhận được kết quả ngược lại với bạn, nhưng thật thú vị khi có thể tự chạy chúng.
Hold OfferHunger

@Hold OfferHunger có - rất thú vị - máy, hệ điều hành và trình duyệt của bạn là gì?
Kamil Kiełczewski

1
FF59, Win10. Các kết quả dường như đã thay đổi một lần nữa (có thể phụ thuộc vào # các tab đang mở), nhưng vẫn chủ yếu giống nhau: imgur.com/a/MLDnTWM Máy: bảng intel 10 năm (dp55wg), lõi tứ 3.1ghz, Ram ddr3 16gb, gtx1070.
Hold OfferHunger

1
<style>
a:hover {
    cursor:pointer;
}
</style>

<script type="text/javascript" src="lib/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $(".link").click(function(){
        var href = $(this).attr("href").split("#");
        $(".results").text(href[1]);
    })
})
</script>



<a class="link" href="#one">one</a><br />
<a class="link" href="#two">two</a><br />
<a class="link" href="#three">three</a><br />
<a class="link" href="#four">four</a><br />
<a class="link" href="#five">five</a>


<br /><br />
<div class="results"></div>

1
Câu trả lời chỉ có mã không hữu ích như câu trả lời có mã làm việc cộng với giải thích hữu ích. Trong trường hợp này, sẽ đáng để giải thích câu trả lời này cho một đứa trẻ 5 tuổi.
Somnath Muluk 7/11/2015
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.