2014-06-28 92 views
-2

您好我有一些代碼,發射時工作,然而e.preventDefault()不工作;不是射擊。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); 
         }) 
        }); 

+0

請註明問題,你有什麼需要 – SarathSprakash

+0

你這是什麼期望'e.preventDefault()'做? – JJJ

+0

「不按預期工作」不是真正的問題描述,它是配對嗎?請寫下你想要發生的事情,然後會發生什麼。同時,請執行下列操作同時:1)檢查開發者控制檯,並讓我們知道,如果任何錯誤彈出,2)移動'e.preventDefault();'到單擊處理的底,看看它是否有助於 – Banana

回答

1

既然你要添加的HTML 動態,你需要使用一個delegate()on()

原因是: 在頁面載入時這些HTML元素都在頁面不存在,所以jquery的不知道這樣的元件在page.Therefore Jquery的exsist提供on()delegate(),這將作爲一個代表動態添加的html元素。

您應該使用

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

}); 

,或者你可以使用委託

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

}); 

希望這有助於 謝謝

+0

這使得一個頭錯誤出現,因爲我打電話給它兩次,一旦我刪除了上面的委託代碼工作的重複頭! 感謝SarathSprakash – user3493268

+0

歡迎,很高興爲你工作 – SarathSprakash