Cách thay đổi thuộc tính tiêu đề của phần tử bằng jQuery


226

Tôi có một yếu tố đầu vào mẫu và muốn thay đổi thuộc tính tiêu đề của nó. Điều này phải dễ như ăn bánh, nhưng vì một số lý do tôi không thể tìm ra cách để làm điều này. Làm thế nào được thực hiện, và tôi nên tìm kiếm ở đâu và làm thế nào để làm điều này?

Câu trả lời:


463

Trước khi chúng tôi viết bất kỳ mã nào, hãy thảo luận về sự khác biệt giữa các thuộc tính và thuộc tính. Các thuộc tính là các cài đặt bạn áp dụng cho các thành phần trong đánh dấu HTML của bạn ; trình duyệt sau đó phân tích cú pháp đánh dấu và tạo các đối tượng DOM thuộc nhiều loại khác nhau có chứa các thuộc tính được khởi tạo với các giá trị của các thuộc tính. Trên các đối tượng DOM, chẳng hạn như đơn giản HTMLElement, bạn hầu như luôn muốn làm việc với các thuộc tính của nó , chứ không phải bộ sưu tập thuộc tính của nó .

Thực tiễn tốt nhất hiện nay là tránh làm việc với các thuộc tính trừ khi chúng là tùy chỉnh hoặc không có thuộc tính tương đương để bổ sung. Kể từ khi titlekhông thực sự tồn tại như một đọc / ghi tài sản trên nhiều HTMLElements, chúng ta nên tận dụng lợi thế của nó.

Bạn có thể đọc thêm về sự khác biệt giữa các thuộc tính và thuộc tính ở đây hoặc ở đây .

Với ý nghĩ này, hãy thao túng rằng title...

Nhận hoặc Đặt thuộc titletính của phần tử mà không cần jQuery

titlelà một thuộc tính công cộng, bạn có thể đặt nó trên bất kỳ phần tử DOM nào hỗ trợ nó bằng JavaScript đơn giản:

document.getElementById('yourElementId').title = 'your new title';

Truy tìm gần như giống hệt nhau; không có gì đặc biệt ở đây:

var elementTitle = document.getElementById('yourElementId').title;

Đây sẽ là cách nhanh nhất để thay đổi tiêu đề nếu bạn là người tối ưu hóa, nhưng vì bạn muốn jQuery tham gia:

Hãy tìm lấy hoặc Đặt phần tử title hữu với jQuery (v1.6 +)

jQuery đã giới thiệu một phương thức mới trong v1.6 để lấy và thiết lập các thuộc tính. Để đặt thuộc titletính trên một phần tử, sử dụng:

$('#yourElementId').prop('title', 'your new title');

Nếu bạn muốn truy xuất tiêu đề, hãy bỏ qua tham số thứ hai và nắm bắt giá trị trả về:

var elementTitle = $('#yourElementId').prop('title');

Kiểm tra prop()tài liệu API cho jQuery.

Nếu bạn thực sự không muốn sử dụng các thuộc tính hoặc bạn đang sử dụng phiên bản jQuery trước v1.6, thì bạn nên đọc tiếp:

Nhận hoặc Đặt title thuộc tính của một phần tử với jQuery (phiên bản <1.6)

Bạn có thể thay đổi title thuộc tính với mã sau:

$('#yourElementId').attr('title', 'your new title');

Hoặc truy xuất nó với:

var elementTitle = $('#yourElementId').attr('title');

Kiểm tra attr()tài liệu API cho jQuery.


5
Nếu đây không phải là một câu trả lời được xây dựng tốt, thì không có câu trả lời nào. VÀ nó chính xác như nó được xây dựng tốt. +1 ... (oh, và tên của bạn cũng tuyệt vời, vì nó là của tôi :) thậm chí còn được đánh vần giống nhau!)
VoidKing

@VoidKing: Tôi có xu hướng xem lại và làm cho câu trả lời hiện tại trở nên phổ biến (trong đó tôi chỉ có một vài). Tôi cố gắng cung cấp mọi thứ mà tôi hy vọng sẽ tìm thấy nếu tôi đang nghiên cứu hoặc đăng câu hỏi. Tôi rất vui vì bạn đã tìm thấy nó!
Cᴏʀʏ

@Cory Vâng, thành thật mà nói khi tôi đang tìm kiếm một thứ khác (đó là một cú sút xa, nhưng đang tìm kiếm nếu có bất kỳ cách nào để tạo kiểu cho hộp tiêu đề HTML mặc định). Tôi đã không tìm thấy những gì tôi đang tìm kiếm, nhưng thực sự ngưỡng mộ nỗ lực của bạn cho câu trả lời này (bạn đã cho thấy tài nguyên, .js và jQuery thuần túy, v.v.). Dù sao, câu trả lời tốt đẹp!
VoidKing

@VoidKing: Đây có lẽ là nơi sai để trả lời, nhưng nếu bạn đang nói về các chú giải công cụ mặc định xuất hiện khi bạn di chuột qua các mục có thuộc tính alt hoặc tiêu đề, thì có lẽ câu trả lời này sẽ cung cấp cho bạn một cái nhìn sâu sắc.
Cᴏʀʏ

@Cory Cảm ơn bạn, thưa ông!
VoidKing

31

Trong các hộp thoại phương thức jquery ui, bạn cần sử dụng cấu trúc này:

$( "#my_dialog" ).dialog( "option", "title", "my new title" );

3
Phao cứu sinh !! Khi sử dụng câu trả lời được bình chọn ở trên, tiêu đề được thay đổi một lần, sau đó tiêu đề không thay đổi sau đó KHÔNG GIỚI HẠN bạn sử dụng tùy chọn tiêu đề trong hộp thoại !! CẢM ƠN SOOOOOOO RẤT NHIỀU!
Ryan Ellis

Tôi rất vui vì tôi đã đọc các bình luận ;-) Nếu bạn cần thay đổi tiêu đề nhiều lần, bạn phải đặt nó trong các tùy chọn hộp thoại.
Michel

Không bao giờ có thể nghĩ rằng điều này sẽ được chấp nhận nhiều lần. Tôi rất vui vì điều đó đã giúp :-)
Igor L.

15

Tôi tin

$("#myElement").attr("title", "new title value")

hoặc là

$("#myElement").prop("title", "new title value")

nên làm trò lừa ...

Tôi nghĩ rằng bạn có thể tìm thấy tất cả các hàm cốt lõi trong Tài liệu jQuery , mặc dù tôi ghét định dạng.


7

Một tùy chọn khác, nếu bạn thích, sẽ là lấy phần tử DOM từ đối tượng jQuery và sử dụng các trình truy cập DOM tiêu chuẩn trên nó:

$("#myElement")[0].title = "new title value";

"Cách jQuery", như được đề cập bởi những người khác, là sử dụng phương thức attr (). Xem tài liệu API cho attr () tại đây .


2
jqueryTitle({
    title: 'New Title'
});

cho tiêu đề đầu tiên:

jqueryTitle('destroy');

https://github.com/ertaserdi/jQuery-Title


Vấn đề này có thể được giải quyết bằng cách sử dụng chính thư viện jquery. Bạn chỉ nên tham khảo sử dụng thư viện của bên thứ 3 khi OP đề cập đến nó hoặc không thể thực hiện được nếu không sử dụng thư viện của bên thứ ba.
Avishek

Có, nhưng có những tính năng khác. Giải pháp đơn giản nhưng tốt đẹp ... Bạn có thể kiểm tra ...
Erdi Ertaş

sẽ có một chi phí vận chuyển http của thư viện bên thứ 3, có thể tránh được bằng cách sử dụng phương thức stock / gốc.
Avishek

Thêm vào đó, đã có một câu trả lời được chấp nhận rộng rãi mà hiệu quả hơn.
Avishek

2

Nếu bạn đang tạo một divvà cố gắng thêm một titlevào nó.

Thử

var myDiv= document.createElement("div");
myDiv.setAttribute('title','mytitle');

0

Ngoài câu trả lời @ Cᴏʀʏ, hãy đảm bảo tiêu đề của chú giải công cụ chưa được đặt thủ công trong phần tử HTML. Trong trường hợp của tôi, lớp span cho tooltip đã có một văn bản tittle cố định, do hàm JQuery này của tôi$('[data-toggle="tooltip"]').prop('title', 'your new title'); không hoạt động.

Khi tôi loại bỏ thuộc tính title trong lớp span HTML, jQuery đã hoạt động.

Vì thế:

<span class="showTooltip" data-target="#showTooltip" data-id="showTooltip">
      <span id="MyTooltip" class="fas fa-info-circle" data-toggle="tooltip" data-placement="top" title="this is my pre-set title text"></span>
</span>

Nên becode:

<span class="showTooltip" data-target="#showTooltip" data-id="showTooltip">
      <span id="MyTooltip" class="fas fa-info-circle" data-toggle="tooltip" data-placement="top"></span>
</span>
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.