我想将一个事件附加到列表框中的选项标签,以便当我单击其中一个时,它会移动到另一个列表框。
我有这段代码:
$('#' + opts.leftListId + ' > option').live('dblclick', function () {
// Move the object
});
在Firefox中运行良好,但在IE中事件根本不会被触发。我不能在select节点上双击,因为我只需要移动被点击的节点。 有什么想法吗?
答案 0 :(得分:7)
如果您尝试将它们添加到选项元素,无论您如何添加它,都不会触发Doubleclick。我在IE中工作的唯一一件事就是将事件监视添加到选择本身,然后查看所选元素:
$("select").dblclick(function () {
$("select option:selected").each(function () {
alert(this);
});
});
答案 1 :(得分:6)
请改为尝试:
$('#' + opts.leftListId).find('option').each(function(){
$(this).live('dblclick', function () {
// Move the object
});
});
更新(GMT 10:21)
尝试取出直播:
$('#' + opts.leftListId).find('option').each(function(){
$(this).dblclick( function () {
// Move the object
});
});
请参阅此示例 - http://jsfiddle.net/hr7Gd/
更新(格林威治标准时间10:45)
你的另一个选择是在选择上运行dblclick()
(有效!)并且选择了获取选项的谷值并使用它:
$("select").dblclick(function () {
var str = "";
$("select option:selected").each(function () {
str += $(this).text() + " ";
});
$("span").text(str);
})
.trigger('change');
请参阅此示例,在此处工作 - http://jsfiddle.net/hr7Gd/1/
答案 2 :(得分:3)
知道了 - 我错误地认为我无法使用select的双击事件。
这是工作代码:
$('#' + opts.leftListId).dblclick(function () {
// Move selected options: $('#' + opts.leftListId + ' :selected')
});
我没想到这会起作用的原因是我认为它会移动所有选定的元素而不仅仅是点击的元素。但是,似乎双击的第一次单击仅选择一个元素,然后在双击时触发此事件并将其移过。