jquery e.preventDefault();没有按预期工作

时间:2014-06-28 12:46:51

标签: javascript jquery

嗨我有一些代码,当被解雇时工作,但e.preventDefault();没有开火。

最初它是在每个循环的内部,当点击完成任务9x(取决于循环的数量)但e.preventDefault();工作正常。

任何帮助表示感谢(相对较新的JavaScript):

<script Content-Type: 'application/javascript'>

        $('.cartAdd').click(function(e) {

        e.preventDefault();
        $(this).html('Adding Item To Cart')
        element = $(this)
        ajaxUrl = element.attr('href');
        $.get(ajaxUrl + '&c=?', function(response) {
        element.html('Item Added Successfully!');
        element.css('background','#1150f1');
        //$('#checkoutbtn').animate({backgroundColor: '#1150f1'}, 200)
        setTimeout(function() {
        element.html('Add To Cart');
        element.css('background','green');
                                }, 5000);
                        }).error(function(error) {
                            element.html('Error adding to cart')
                            element.css('background','red');                       
                            setTimeout(function() {
                            element.html('Add To Cart');
                            element.css('background','none');
                            }, 5000);
                        })
                    });

1 个答案:

答案 0 :(得分:1)

由于您要添加html 动态,因此您需要使用delegate()on()

<强>原因:    在页面加载时,页面中没有这些html元素,因此jquery不知道页面中存在这样的元素。因此Jquery提供on()delegate(),它们将充当委托对于动态添加的html元素。

你应该使用

$('body').on('click','.cartAdd',function(e)
{
    e.preventDefault();

});

或者您可以使用代理

 $('body').delegate('.cartAdd','click',function(e)
{
    e.preventDefault();

});

希望这有帮助, 谢谢