2011-07-29 30 views
5

Đây có lẽ là một câu hỏi khá vô nghĩa nhưng tôi cho rằng nó sẽ hữu ích cho nhiều người trong chúng ta.Ẩn trường hộp văn bản và nhãn được liên kết với nó

Trong trường hợp này, tôi muốn có thể ẩn một hộp văn bản và nhãn của nó tất cả trong một lần, mà không cần phải chọn cả hai phần tử và ẩn chúng riêng lẻ.

<label for="a">some text:</label> 
<input type="text" class="text" id="a" /> 

Vì vậy, đối với trường hợp trên, bạn có thể sử dụng lệnh jQuery đơn giản để ẩn cả hai?

Trả lời

13

Bạn có thể làm điều này

$('label[for=a], input#a').hide(); 

http://jsfiddle.net/jasongennaro/dYFMU/

[ ] chọn attribute. Trong trường hợp này, chúng tôi đang nhắm mục tiêu thuộc tính for bằng a.

Đồng thời, chúng tôi sử dụng , để thực hiện một lựa chọn khác, input với số id=a.

EDIT

Ngoài ra, nếu bạn cần phải làm điều này cho nhiều labelsinputs bạn có thể đặt labelid trong một mảng như sau:

<label for="a">some text:</label> 
<input type="text" class="text" id="a" /> 

<br /> 

<label for="b">some text:</label> 
<input type="text" class="text" id="b" /> 

<br /> 

<label for="c">some text:</label> 
<input type="text" class="text" id="c" /> 

js

var a = ['a','b','c']; 

for(var i=0; i<a.length; i++){ 
    $('label[for=' + a[i] + '], input#' + a[i]).hide(); 
} 

http://jsfiddle.net/jasongennaro/dYFMU/1/

+0

Brilliant! Đó là ngắn, dễ đọc và một giải pháp tuyệt vời! Cảm ơn rất nhiều vì điều này! – Hallaghan

+0

niềm vui của tôi @Hallaghan. –

1

Cách đơn giản nhất có thể là chỉ quấn chúng vào một div và ẩn thay vào đó.

<div id="hidethis"> 
    <label for="a">some text:</label> 
    <input type="text" class="text" id="a" /> 
<div> 

$("#hidethis).hide(); 
+0

Điều đó sẽ làm điều đó nhưng isn' t có bất cứ điều gì khác mà có thể được sử dụng để ẩn chúng bên cạnh việc phải thêm một phần tử div vào mã, hay đúng hơn, mà không cần phải thêm nhiều html hơn? – Hallaghan

+0

Bạn có thể thử phương pháp chuỗi. Chọn nhãn, ẩn nó, nhận '.next() 'và sau đó ẩn cái đó, nhưng đó không phải là giải pháp tốt. Điều đó sẽ chỉ được sử dụng jQuery vì lợi ích của việc sử dụng jQuery. Tôi thà quấn chúng vào một phần tử cha hoặc chỉ cần thực hiện hai cuộc gọi riêng biệt. Nhưng tôi không phải là chuyên gia về jQuery, vì vậy nếu bất cứ ai khác có một giải pháp cho điều này, tôi cũng muốn được xem nó. – Brandon

1

Tìm đầu vào tuy nhiên bạn muốn, và sau đó bạn có thể tìm thấy ID của nó sử dụng

var myInputBoxID = $(some selector).attr("id"); 

Sau đó bạn có thể tham khảo các nhãn bằng cách sử dụng cú pháp sau để bắt của nhãn cho thuộc tính:

$("label[for=' + myInputBoxID + ']").hide(); 

Bạn có thể lồng ghép mọi thứ một cách độc đáo, do đó bạn không cần phải lưu trữ bất kỳ thứ gì dưới dạng biến và thay vào đó chạy qua "cho từng" trên tất cả các kết quả của bộ chọn hộp nhập liệu của bạn. Nhưng dù sao chìa khóa được tìm kiếm ID và sau đó sử dụng đó để tìm nhãn với nhãn [cho = ...]

2

nếu bạn muốn sử dụng lại các ẩn, bạn có thể tạo một hàm tương tự như:

function hideTandem(id){ 
    $('#' + id + ', label[for=' + id + ']').hide(); 
} 

và gọi nó bằng cách cung cấp id của input

hideTandem('a'); 
Các vấn đề liên quan