2011-12-28 41 views
11

Tôi có đánh dấu sau:Bắt đầu vào giá trị gần nhất từ ​​yếu tố nhấp với jQuery

<div class="options"> 
    <div class="quantity"> 
    <label>Qty:</label> 
    <input type="text" name="quantity" value="1"/> 
    </div> 
    <div class="buttons"> 
    <a href="#" class="add">Add Item</a> 
    </div> 
</div> 

Tôi có một sự kiện click binded vào 'thêm' lớp sử dụng jQuery. Khi tôi nhấp vào đó, tôi muốn nhận được giá trị của tên = "số lượng", nhưng có một số nơi 'thêm' được nhấp và một số trường số lượng.

Tôi đang cố gắng lấy giá trị đầu vào 'gần nhất'. Tôi đã thử sử dụng 'gần nhất' và 'tìm thấy', nhưng không may mắn.

Bất kỳ ý tưởng nào về cách tôi có thể sử dụng jQuery này? Cảm ơn bạn!

+1

Tôi chưa bao giờ nghe nói về một phương pháp jQuery 'findall'. Tôi đề nghị bạn đi qua [phương pháp truyền tải] (http://api.jquery.com/category/traversing/) và xem chúng. 'gần nhất' đã là một khởi đầu tốt. Vui lòng đăng mã bạn có cho đến nay. –

Trả lời

26
$(".add").on("click", function() { 
    var val = $(this).closest("div.options").find("input[name='quantity']").val(); 
}); 

chiến lược đặt ra ở đây là:

  • Sử dụng closest để tìm tổ tiên gần nhất phù hợp với bộ chọn nhất định (trong trường hợp này một div với lớp option)
  • Sau đó sử dụng find để tìm input với số name đã cho sử dụng attribute equals selector.
  • Cuối cùng, sử dụng val để truy xuất giá trị của input.
3

Bạn cần sử dụng closest để tìm phần tử kèm theo phù hợp và sau đó làm việc từ đó.

$(link).closest(".options").find("input[name=quantity]") 
0
$(this).parent().parent().find("input[name=quantity]").val() 

này nên làm các trick

+1

Điều đó sẽ không hoạt động. '$ (this) .parent()' sẽ là 'div.buttons'. –

+0

Tốt tại chỗ xấu của tôi tôi vẫn sẽ đề nghị sử dụng gần nhất tuy nhiên chỉnh sửa câu trả lời của tôi bất kỳ cách nào cho sự chính xác –

0

Tôi đoán công trình gần nhất chỉ với các yếu tố cùng cấp. vì vậy ..

Tại sao không đặt id vào trường nhập và chọn $('#input-id')?

Hoặc đi qua lên đến tùy chọn lớp học và tìm đầu vào trong đó: $(this).parents('.options:first').find('input');

+0

'gần' tìm tổ tiên gần nhất trong DOM phù hợp với bộ chọn. 'cha mẹ' tìm tất cả tổ tiên khớp với bộ chọn. –

+0

Chỉ cần sửa chữa, addad: đầu tiên. Vì vậy, các công trình gần nhất tìm kiếm dom trở lên? Thông minh hơn một lần nữa .. :) – Kristian

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