2012-09-27 108 views
0

我有下面的代碼的問題:jQuery的e.preventDefault停止循環

function KeyCheck(e) { 

      // ... Some Code 

    for (var i = 0; i < length; i++) { 
     width = elements[i].offsetWidth; 

     if(width > 245) { 
      e.preventDefault(); 
     } 
    } 
} 

正如你可以看到我有一個循環,我想只有那些小於245px到 有事件的工作元素,大於245px的元素不具備它的功能。

的問題 - 當if「符合」寬度小於245px的元素它停止循環,我認爲它退出函數也...

我能做到這一點,將繼續循環,只有小於245px寬的元素將使事件發揮作用?

+0

沒有足夠的信息可用。如何定義「元素」和「長度」? – Shmiddty

+0

@Shmiddty這些變量是相當複雜的,但元素[我]它是一個div數組,它的長度只是elements.length ... – Israelg99

回答

1

定義將繼續循環,直到循環結束這是你正在試圖做的?:http://jsfiddle.net/D2xhz/

$("input").keydown(function(e){ 
    if ($(this).width() > 245) 
     e.preventDefault(); 
});​ 

底部什麼碼兩個輸入無法輸入。

+0

謝謝你!它的工作原理,你做了同樣的事情,但在jQuery中,e.preventDefault();僅適用於jQuery事件函數? – Israelg99

+0

不完全。 'preventDefault'在所有瀏覽器中都不是標準的,但jQuery會在不存在的時候創建它。 – Shmiddty

4

爲-IS除非preventDefault不上e

+0

我添加了這行代碼if(e && e.preventDefault){e .preventDefault(); }但它仍然不起作用......它看起來像是該命令被觸發時,它阻止了該事件處理循環附帶的任何元素。 – Israelg99

0

e.preventDefault();應該在事件回調函數中使用默認的事件即表單提交。

我的你的情況你應該爲div執行一些動作小145px