2012-12-10 119 views
0

這裏是一個鏈接到jsfiddle。 http://jsfiddle.net/5U4fT/ 如果您有解決方案,請在此處進行編輯併發送鏈接。非常感謝!jquery .on()不按預期方式工作

的HTML是

<html> 
     <body> 

      <a class="bonk" href="#">hi</a><br /> 
      <a class="make-new" href="#">add bonk class to dom</a><br /> 

     </body> 
    </html> 

和JavaScript是

$('body').on('click', '.bonk ', function() { 
     return false; 
    }).each(function() { 
     $('.bonk').click(function() { 
      alert("hi"); 
     }); 
    }); 

    $(".make-new").click(function() { 
     $('body').append('<a class="bonk" href="#">hi</a><br />'); 
    }); 
+2

使用了'。每()''的元素body'上... – ahren

+1

你有什麼期望?這是什麼問題。\ –

+0

閱讀API文檔來了解爲什麼你與委託' on()'vs using'clcik()' – charlietfl

回答

4

http://jsfiddle.net/5U4fT/1/

取出.each()和超額處理器。

$('body').on('click', '.bonk', function(){ 
    alert('hi'); 
    return false; 
}); 
$(".make-new").click(function(){ 
    $('body').append('<a class="bonk" href="#">hi</a><br />'); 
});​ 
+0

謝謝你,但是,我需要我的代碼,包括.each(),因爲在頁面加載的某種原因,如果我點擊類'bonk'它不會觸發的元素,我必須點擊它,並然後再次點擊它。有什麼建議麼? – user1888959

+0

取決於頁面和事件傳播中的其他處理程序 - 如果沒有看到所有代碼,我都說不出來......您還應該將代碼包裝在'document.ready'中以確保安全。 – ahren

+0

它在document.ready中。如果您好奇該網站是http://www.metalgains.com,只需點擊查看演示,然後使用默認憑據登錄。然後嘗試點擊「鉛筆」。它讓你點擊兩次。我在.on()中使用.each補救了過去,但由於某種原因,此實例無法正常工作。您可以點擊「添加資產」按鈕,然後填寫並提交表單以查看新元素,以創建新元素。 – user1888959