从触发事件的元素返回属性id

时间:2013-01-08 20:23:15

标签: javascript

我有一个元素,这个元素通过以下代码调用函数calcTotal:

$('.pause').change(function(e) {
    window.alert("pause changed");
    calcTotal(e);

calcTotal(e)的代码如下:

function calcTotal(event)
{   alert('calcTotal called');
    var myId = event.currentTarget.attr('id');

    myId = myId.replace(/[^0-9]/g, '');

    var timeRegex = /^[0-9]{1,2}:[0-9]{2}$/;

    if($('#start'+myId).val().match(timeRegex) && $('#end'+myId).val().match(timeRegex) && $('#pause'+myId).val().match(timeRegex))
    {
        var minutes = 0;

        var n = $('#end'+myId).val().split(':');
        minutes = parseInt(n[0])*60 + parseInt(n[1]);

        var n = $('#start'+myId).val().split(':');
        minutes -= parseInt(n[0])*60 + parseInt(n[1]);

        var n = $('#pause'+myId).val().split(':');
        minutes -= parseInt(n[0])*60 + parseInt(n[1]);

        var hours = Math.floor(minutes/60);
        minutes = minutes % 60;
        alert(hours + ':' + minutes);
        $('#total' + myId).val(hours + ':' + minutes);
    }
    else
    {       
        $('#total' + myId).val('00:00');
    }

}   

它不起作用,因为我检查过,当我用firebug进行调试时,它说:

TypeError: event.currentTarget.attr is not a function
var myId = event.currentTarget.attr('id');  

我想在myId中存储元素的id。 我该怎么做?

3 个答案:

答案 0 :(得分:18)

event.currentTarget不是jQuery对象,它是一个DOM节点。

var myIf = event.currentTarget.id;

答案 1 :(得分:10)

event.currentTarget不是jQuery对象,因此attrundefined

您可以通过以下方式解决问题:

$(event.currentTarget).attr('id');
event.currentTarget.id;

答案 2 :(得分:3)

假设您的其余代码按预期工作,我建议:

var myId = event.currentTarget.id;

因为它是一个普通的DOM节点,而不是一个jQuery对象,所以attr()方法不会,也不会起作用。

参考文献: