Javascript 在选择列表中选择相同的选项
我拥有的是一个通过jquery填充的html选择列表。现在我有一个更改事件,所以当我更改选项时,地图会重新聚焦在POI上。我试图让它工作,这样当我点击同一个选项时,地图会将其视为一个变更事件。选项不支持单击事件,并且在选择列表中添加一个单击事件也不起作用,因为将有两个单击事件 总之,如果单击相同的选项,.change()不会触发 有没有办法让这项工作,修改选项标签或其他我可能不知道的事件Javascript 在选择列表中选择相同的选项,javascript,jquery,html,Javascript,Jquery,Html,我拥有的是一个通过jquery填充的html选择列表。现在我有一个更改事件,所以当我更改选项时,地图会重新聚焦在POI上。我试图让它工作,这样当我点击同一个选项时,地图会将其视为一个变更事件。选项不支持单击事件,并且在选择列表中添加一个单击事件也不起作用,因为将有两个单击事件 总之,如果单击相同的选项,.change()不会触发 有没有办法让这项工作,修改选项标签或其他我可能不知道的事件 谢谢 您可以添加没有值的第一个选项。更改时,将第一个选项的值更改为所选选项的值,并执行“转到代码” 因为您希
谢谢 您可以添加没有值的第一个选项。更改时,将第一个选项的值更改为所选选项的值,并执行“转到代码”
因为您希望能够再次更改它,所以必须使用
$('item')[0]选择第一个选项。selectedIndex=0
。这将不会被用户注意到,因为它具有相同的值。因此,您的用户可以再次将其更改为他们刚刚选择的选项,要将其向后折叠,您可以添加没有值的第一个选项。更改时,将第一个选项的值更改为所选选项的值,并执行“转到代码”
因为您希望能够再次更改它,所以必须使用
$('item')[0]选择第一个选项。selectedIndex=0
。这将不会被用户注意到,因为它具有相同的值。因此,您的用户可以再次将其更改为刚刚选择的选项,以将其向后折叠尝试执行以下操作:
$('select').on({
change: function(e) {
alert('change')
$(this).data('change', true);
},
click: function() {
if (!$(this).data('change')) {
$(this).trigger('change');
}
$(this).data('change', false);
}
});
因此,我们的想法是,只有在没有之前的选项更改时,才在单击时触发更改事件。为此,我们可以设置一些标志,就像我在数据更改中所做的那样
正确答案:
我会编辑这个答案,这样我就可以接受这个正确的答案,因为这个想法是正确的,但是实现不是。正确的方法是取出.change事件。链接到正确的代码:
代码:
尝试这样做:
$('select').on({
change: function(e) {
alert('change')
$(this).data('change', true);
},
click: function() {
if (!$(this).data('change')) {
$(this).trigger('change');
}
$(this).data('change', false);
}
});
因此,我们的想法是,只有在没有之前的选项更改时,才在单击时触发更改事件。为此,我们可以设置一些标志,就像我在数据更改中所做的那样
正确答案:
我会编辑这个答案,这样我就可以接受这个正确的答案,因为这个想法是正确的,但是实现不是。正确的方法是取出.change事件。链接到正确的代码:
代码:
我也有同样的问题,但在手机上也需要它,所以我结合了两种不同的解决方案。不幸的是,我没有找到在不多次触发目标函数的情况下执行所有这些操作的方法,因此我最终使用setTimeOut
对其进行了限制:(
这远不是完美的,但在我的场景中有效:
<select id="select">
<option disabled selected>Pick one..</option>
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
<option value="4">four</option>
<option class="dummy" style="display:none">Pick one..</option>
</select>
jsFIDLE:我也有同样的问题,但在移动设备上也需要它,所以我结合了两种不同的解决方案。不幸的是,我没有找到一种方法来完成所有这些,而不多次触发目标函数,所以我最终用设置超时来限制它:(
这远不是完美的,但在我的场景中有效:
<select id="select">
<option disabled selected>Pick one..</option>
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
<option value="4">four</option>
<option class="dummy" style="display:none">Pick one..</option>
</select>
jsIDLE:显示一些代码!p.s.您可以为选择列表使用.change()
事件是的,我知道我可以使用.change(),但是如果您单击相同的选项,.change()不会触发显示一些代码!p.s.您可以为选择列表使用.change()
事件是的,我知道我可以使用.change(),但是.change()如果您单击同一个选项,则不会触发此选项已关闭,但在单击两次后,它会因其设置方式而跳过彼此的单击。尽管此想法是正确的。此选项已关闭,但在单击两次后,它会因其设置方式而跳过彼此的单击。尽管此想法是正确的。