2010-11-10 105 views
1

這個簡單的測試代碼在所有瀏覽器除了IE以外(在IE8測試):有誰知道如果IE'返回false'?

#dBox { 
    height:100px; 
    width: 230px; 
    overflow-y:auto;  
} 

$(function() { 
    $('#s').focus(function(){ 
     $(this).after('<ul id="dBox"></ul>'); 
     for (i=0;i<10;i++) $('#dBox').append('<li>'+i+'</li>'); 
    }); 
    $('#dBox').live('mousedown',function(event) { 
     //event.stopPropagation(); 
     //event.preventDefault(); 
     //console.log (event.isDefaultPrevented()); 
     //event.stopImmediatePropagation(); 
     return false; 
    }); 
    $('#s').blur(function() { $('#dBox').remove(); }); 
});  
<input type="text" id="s"/> 

我試着從活FN所有選項,但沒有運氣。
event.isDefaultPrevented()它返回true,但#dBox它仍然被刪除。
我甚至試圖綁定焦點fn內的常規mousedown。但同樣的結果,它在所有的瀏覽器,但不是IE。
有沒有人有任何想法是什麼錯?

+0

http://stackoverflow.com/editing-help – 2010-11-10 00:59:27

+1

您發佈的代碼實際上不會工作。你將一個鬆散的JavaScript塊傳遞給'$('#s')。focus()'。這是你的實際代碼嗎? – 2010-11-10 01:01:31

+0

實際的代碼更加複雜,但我已經在一個單獨的文件中測試了上面的代碼,看看我是否可以跟蹤prb,但目前還沒有運氣。 – silversky 2010-11-10 01:04:42

回答

0

這是直接因爲事件代理與jQuery live()綁定事件使用live不綁定直接元素。相反,它會在文檔的根節點上附加一個處理程序。

的.live()方法能夠影響尚未通過使用事件 代表團添加 到DOM元素 :綁定到一個 祖先元素的處理程序是負責 事件觸發其後代 。處理程序傳遞給 .live()永遠不會綁定到一個元素;而不是.live()將特殊的 處理程序綁定到DOM樹的根。 在我們的例子中,當單擊新元素 時,發生以下步驟:

假設你想保持專注於輸入#dBox元素點擊該會工作的時候,這裏是一個demohttp://www.jsfiddle.net/WurDE/

注意:如果您不想保留輸入焦點,請從代碼中刪除trigger('focus')

$(function() { 
    $('#s').focus(function(){ 
     if (!$('#dBox').length) { 
      var $dbox = $('<ul id="dBox"></ul>'); 
      for (i=0;i<10;i++) $dbox.append('<li>'+i+'</li>'); 
      $(this).after($dbox); 
      $dbox.bind("mousedown", function() { 
      $('#s').unbind('blur') 
      }); 
      $dbox.bind("mouseup", function() { 
      $('#s').bind('blur', function() { 
       $('#dBox').remove(); 
      }).trigger('focus'); 
      }); 
     } 
    }); 

    $('#s').bind('blur', function() { 
     $('#dBox').remove(); 
    }); 
}); 
+0

可以請你再次寫下這些步驟(他們沒有顯示) – silversky 2010-11-10 02:03:52

+0

@silversky ...對不起... ...我不知道我的帖子發生了什麼,但我轉貼與演示。 – 2010-11-10 03:27:33

+0

也許你在FF中測試了這個演示。我知道它在工作。但我已經在所有其他瀏覽器中測試了演示,並且除FF之外它不工作。問題是mouseup不會觸發。我嘗試了同樣的事情,就像你的演示在mousedown上解綁,然後在mouseup上綁定,但與現場fn綁定。 (在焦點之外)。和同樣的prb。 mouseup它沒有被解僱(FF除外)。我認爲這是因爲活的prb,但是在演示之後,我猜測那個帶mouseup的prb是不同的。 – silversky 2010-11-10 12:43:30

相關問題