2017-01-02 9 views
5

Bir değişken olarak blade'e bir düğme ekledim ve

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 }); 

Not şöyle o düğmeye özellikleri şunlardır: x sadece değişken (0,1,2 vs.) olduğu

Bu düğme id = "xx2" bir div eklenecek nasıl olduğunu : -

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

Bu düğmenin yukarıda belirtilen JavaScript işlevi:

function RemoveUpdateLeaveTypes(el) 

{

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

}

bu butona tıkladıktan sonra bu hata mesajı ben bu komutu kullanırsanız ı olacak konsolun

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

üzerinde görünür ancak bu hata yok

+0

ile soru güncelleyin bu duruma yardım etmek hiçbir şey yapmaz jQuery olmadan bu elemanın id özelliğine olsun a ** Çalıştırılabilir ** [mcve] Yığın Snippet'lerini ('[<>]' araç çubuğu düğmesi) kullanarak. –

cevap

5

jQuery nesnesi için hiçbir id mülkiyet ($(el) bir jQuery nesnesidir) vardır .. peşin, burada bana teşekkür çatışmayı açıklayınız. DOM öğesi özelliğini almak için jQuery prop() (veya attr()) yöntemini kullanın ya da DOM nesnesini dizine göre alın ve özelliği edinin.

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); 


GÜNCELLEME: Eğer bağımsız değişken olarak DOM nesnesi geçiyoruz ve öyle jQuery kullanarak kaydırmak için gerek yoktur gelen doğrudan id özelliği alabilirsiniz beri. Sen html this olarak dom elemanı kendisinde geçiyoruz

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

fakat sadece $ (el) .id.slice (-1) 've çalışmadaki $ $ (el) .attr (" id ") dilimini kullanmanın farkı nedir? (-1)'? plz nedenini açıkla. – Kalanka

+0

@Kalanka: 'attr()', aynı zamanda, öznitelik değerini almak için kullanılan jQuery yöntemlerinden biridir. –

1

yüzden sadece

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