2017-01-02 27 views
5

Tôi đã thêm một nút vào lưỡi dao làm biến và thuộc tính của nút đó như sau

var $btnDelete = $('<input />',{ 

       'id': 'btn_delete'+ x, 
       'type':'button', 
       'name':'btn_delete'+ x, 
       'class':'btn btn-danger editor_remove editor_remove_leave_types ',   
       'onclick':'RemoveUpdateLeaveTypes(this)', 
       'data-id':x }); 

Lưu ý: x chỉ là một biến (0,1,2 vv)

Đây là cách nút được thêm vào sau một div id = "xx2" : -

$('#xx2').append($btnDelete); 

Đây là chức năng JavaScript được đề cập ở trên của nút đó:

function RemoveUpdateLeaveTypes(el) 

{

var currentId=$(el).id.slice(-1); 
    console.log('currentId '+currentId); 

}

Sau khi nhấp vào nút này thông báo lỗi này sẽ xuất hiện trên giao diện điều khiển

Uncaught TypeError: Cannot read property 'slice' of undefined 
at RemoveUpdateLeaveTypes (leavePolicyDetails.js:944) 
at HTMLInputElement.onclick (leave-policies:1) 

nhưng, nếu tôi sử dụng lệnh này tôi sẽ phải không có lỗi

var currentId=$(el).attr("id").slice(-1); 

Xin giải thích cho tôi những mâu thuẫn ở đây, cảm ơn trước ..

+0

Vui lòng cập nhật các câu hỏi với a ** runnable ** [mcve] sử dụng Stack Snippets (nút thanh công cụ '[<>]'). –

Trả lời

5

Không có tài sản id cho đối tượng jQuery ($(el) là một đối tượng jQuery). Để lấy thuộc tính phần tử DOM, hãy sử dụng phương thức jQuery prop() (hoặc attr()) hoặc nhận đối tượng DOM theo chỉ mục và nhận thuộc tính.

var currentId = $(el).prop('id').slice(-1); 
// or 
var currentId = $(el)[0].id.slice(-1); 
// or you can get DOM object using get() method 
var currentId = $(el).get(0).id.slice(-1); 

UPDATE: Vì bạn đang đi qua các đối tượng DOM là một cuộc tranh cãi và bạn có thể nhận được tài sản id trực tiếp từ nó do đó không cần phải quấn nó sử dụng jQuery.

// el === $(el)[0] 
var currentId = el.id.slice(-1); 
+1

nhưng sự khác biệt trong việc sử dụng chỉ là '$ (el) .id.slice (-1)' và cái làm việc '$ (el) .attr (" id "). Slice (-1)'? plz giải thích cho tôi lý do. – Kalanka

+0

@Kalanka: 'attr()' cũng là một trong các phương thức jQuery được sử dụng để truy lục giá trị thuộc tính –

1

Bạn đang đi qua trong các yếu tố dom chính nó như là this trong html vì vậy chỉ cần có được tài sản id của yếu tố đó mà không jQuery mà không làm gì để giúp cho tình trạng này

var currentId= el.id.slice(-1); 
console.log('currentId '+currentId); 
Các vấn đề liên quan