chọn của tôi là:jQuery selector không cập nhật sau khi tự động thêm các yếu tố mới
$('section#attendance input:last')
Tuy nhiên, tôi thêm một đầu vào cho phần # tham dự. Tôi muốn bộ chọn bây giờ chọn phần tử đó (vì nó phải là vì :last
. Tuy nhiên, vì lý do nào đó, nó không, và tôi không chắc chắn tại sao?
Đây là mã đầy đủ của tôi:
$('section#attendance input:last').keydown(function(e) {
if (e.which == 9)
{
var $this = $(this);
var num = parseInt($this.attr('name').match(/\d+(,\d+)?/)[0]) + 1;
$this.parent().append('<input type="text" name="attendance[' + num +']" value="Name and Position" class="medium" />');
}
});
Mã mới:
$("section#attendance").on("keydown", "input:last", function(e) {
if (e.which == 9) {
var $this = $(this);
var num = parseInt($this.attr('name').match(/\d+(,\d+)?/)[0]) + 1;
$this.after('<input type="text" name="attendance[' + num +']" value="Name and Position" class="medium" />');
}
});
EDIT: vấn đề này có vẻ là trên 'đầu vào: cuối cùng', vì nó hoạt động nếu tôi chỉ sử dụng đầu vào Ngoài ra, nếu tôi thêm lớp 'cuối cùng' vào. phần tử cuối cùng, nó hoạt động khi tôi sử dụng 'input.last' làm công cụ chọn.
Hey, tôi đã thử điều này, nhưng vì một lý do nào đó, nó dường như không hoạt động. Tôi đã cập nhật bài đăng của mình bằng mã mới và tôi đã xem qua các tài liệu cho .on(), nhưng tôi không thể tìm ra điều gì sai. Chúc mừng sự giúp đỡ! – chintanparikh
Vấn đề là thẻ đầu vào bạn thêm không có đúng loại thuộc tính tên mà mã của bạn đang mong đợi. Bạn đã không tiết lộ HTML của bạn, nhưng nó không nhìn tôi như mã của bạn có thể làm việc vì cách nó phân tích số ra khỏi thuộc tính name. Regex của bạn khớp với hai số có dấu phẩy ở giữa, nhưng thẻ nhập mới mà bạn thêm không có định dạng đó. Bạn có thể thấy một phiên bản đơn giản hơn ở đây: http://jsfiddle.net/jfriend00/uVHwK/. Chúng tôi sẽ phải xem HTML của bạn để tư vấn cụ thể hơn. – jfriend00