Jquery 有人知道IE是否返回false吗?

Jquery 有人知道IE是否返回false吗?,jquery,internet-explorer,Jquery,Internet Explorer,此简单测试代码适用于除IE8中测试的IE之外的所有浏览器: #dBox { height:100px; width: 230px; overflow-y:auto; } $(function () { $('#s').focus(function(){ $(this).after('<ul id="dBox"></ul>'); for (i=0;i<10;i++) $('#dB

此简单测试代码适用于除IE8中测试的IE之外的所有浏览器:

#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"/>
我已经尝试了LiveFN的所有选择,但是没有运气。 在event.isDefaultPrevented上,它返回true,但dBox仍然被删除。 我甚至尝试在focus fn中绑定一个常规鼠标向下键。但同样的结果是,它可以在所有浏览器中工作,但不能在IE中工作。
有人知道怎么回事吗?

这直接是因为使用live绑定事件的事件委派没有绑定direct元素。相反,它在文档的根节点上附加了一个处理程序

.live方法能够影响 尚未添加的元素 通过使用事件 委托:绑定到 祖先元素负责 在其上触发的事件 后代。处理程序传递给 .live从不绑定到元素; 相反,.live绑定了一个特殊的 指向DOM树的根的处理程序。 在我们的示例中,当新元素 单击后,将执行以下步骤:

假设您希望在单击dBox元素时保持对输入的关注,这将起作用,下面是一个示例

注意:如果您不想保持对输入的关注,那么从代码中删除触发器“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();  
    });
});  

您发布的代码实际上不起作用。您正在将一个松散的JavaScript块传递给$'s'。focus。这是你的实际代码吗?实际代码要复杂得多,但我在一个单独的文件中对上述代码进行了精确测试,以查看是否可以跟踪prb,但目前为止运气不佳。该代码会生成语法错误,@silversky。我认为你缺少一个函数{在那一点上。焦点行。是的,你是对的,这是一个输入错误,但这不是prb,因为在我的代码中我有函数{}.我在这个例子中做了改变also@silversky...sorry关于这一点…我不确定我的帖子发生了什么,但我用一个演示重新发布了。可能你在FF中测试了这个演示。我知道它正在工作。但我刚刚在所有其他浏览器中测试了这个演示,除了FF之外它不工作。问题是鼠标不会启动。我试过了在你的演示中一样的东西在mousedown上解除绑定,然后在mouseup上绑定,但是使用live fn。在焦点fn之外。并且相同的prb。mouseup除了FF之外没有被触发。我认为prb是因为live,但是在你的演示之后,我猜带有mouseup的prb是不同的。事实上,对于FF来说,甚至不需要编写mousedownfn。或返回false。我不知道这是否是FF中的错误,但它非常聪明。@silversky。我刚刚在IE 8和Safari 5中进行了测试,效果很好。不确定您的expierencing@JohnHartsock我还做了一些测试。只有当你点击滚动条时,带鼠标的prb才会启动。如果你点击“ul”鼠标的任何地方,鼠标就会启动,但不会启动滚动条,它只会在FF中触发。效果必须完全是oposite:当用户单击滚动条时,“ul”不必被删除,当用户单击“li”时,“ul”必须被删除,因为这意味着他做出了选择。在mousedown fn中使用retun false。它适用于所有眉毛。除了重新绑定mouseup wil我只在FF工作