我正在阅读jQuery的.on事件处理程序的文档,我开始玩它。
我有一个简单的< select>具有多个属性设置为true的元素。但是,我希望用户能够选择多个项目,而不必按CTRL或Shift键
根据.ON文档,如果您指定选择器,它将自动将这些事件处理程序添加到匹配指定的选择器的容器中的任何新项目中。
。因此,就我而言,我可以决定替换< option>ListBox中可用的元素,但我仍然希望为这些选项具有相同的功能,而不必重新启动这些事件等。
一个人可能认为以下片段应该做到(至少,我做到了):
$('#dropdownlist').on('mousedown', 'option', function(e){
e.preventDefault();
$(this).prop('selected', $(this).prop('selected') ? false : true);
return false;
});
因此,当用户单击该列表框中的选项时,默认操作将被取消,并取决于是否已选择该项目,它将反转该选择。
我创建了一个小小的小提琴,证明了这种行为:小提琴
在那个小提琴中,第一个下拉列表的行为是按预期的,但是替换项目时丢失了功能。这仅适用于ff&Chrome。
第二个下拉列表是我认为应该这样的(明智的事件处理),但是除了在Chrome中,这似乎不起作用-.-替换项目时将保留功能,因为替换项目后单击项目时仍会记录" 2"。
有人可以向我解释为什么会发生这种情况吗?难道我做错了什么?请把我指向正确的方向!
谢谢!
〜dirk
ie不尊重选项标签本身上的Mousedown事件。您必须使用选择标签的Onchange事件,这不是您(也不是我)想要的。我试图做与您完全相同的事情,并且每次尝试都被停止了。我终于放弃了,并将其列出了复选框,因为我可以从我想在这里做的相同的行为。
您可以为某些选项看到此问题,但是我从来没有按照您描述的方式工作。