JQuery Type-error e是未定义的问题

时间:2014-09-02 08:16:06

标签: javascript jquery html

此代码给出了一个错误:

var openPrayer = function(e) {
    e.preventDefault();
    var id   = $(e.currentTarget).data('id');
    var json = $.getJSON('/user/prayers/' + id);
    var temp = new t($('#prayerTemp').html());

    json.then(function(resp){
        var modal = temp.render(resp[0]);
        $('body').append(modal);
    });
}
$('.open-prayer').on('click', openPrayer);

这是错误:

TypeError: e is undefined

我不知道自己哪里出错了,上面的代码会将JSON响应加载到我在下面设置的模板中:

<script type="t/template" id="prayerTemp">
    <div class="prayer-modal">
        <img src="/img/icons/heart_infographic_prayer.jpg" class="hearts"/>
        <div class="prayer">
            <h1>@{{=name}}</h1>
            <p>@{{=body}}</p>
        </div>
        <span class="close-prayer">&times;</span>
    </div>
</script>

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

而不是

 var id = $(e.currentTarget).data('id');

使用

 var id = $(e.target).data('id');

工作正常。

如果想要了解e.currentTargete.target之间的更多区别,请参阅此处: -

Difference between e.target and e.currentTarget

答案 1 :(得分:0)

var id = e.currentTarget.id;

工作正常。但如果你需要IE&lt; 8兼容性使用在MDN

解释的jQuery解决方案或解决方案