$(this).attr(" id")。slice(-1)正在工作,但$(this).id.slice(-1)无效

时间:2017-01-02 17:55:09

标签: javascript jquery laravel-5.3

我在刀片上添加了一个按钮作为变量,该按钮的属性如下

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

注意:x只是一个变量(0,1,2等)

这是按钮附加到id =&#34; xx2&#34;的div的方式。 : -

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

这里是上述按钮的JavaScript功能:

function RemoveUpdateLeaveTypes(el)

{

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

}

单击此按钮后,控制台上将显示此错误消息

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

但是,如果我使用此命令,我将没有错误

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

请在此解释我的冲突,提前谢谢..

3 个答案:

答案 0 :(得分:5)

jQuery对象没有id属性($(el)是jQuery对象)。要获取DOM元素属性,请使用jQuery prop()(或attr())方法或通过索引获取DOM对象并获取属性。

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:由于您将DOM对象作为参数传递,并且您可以直接从它获取id属性,因此无需使用jQuery包装它。

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

答案 1 :(得分:1)

你正在将hom元素本身作为this传递给html,所以只得到没有jQuery的那个元素的id属性,这对于这种情况没有任何帮助

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

答案 2 :(得分:0)

var input = ["apple", "windows", "ubuntu", "cola", "system"];

var answer = function (ele){
    if (ele.charAt(0) == "a" || ele.slice(-1)== "a")
    return ele
}

console.log(input.filter(answer))