2

我有一个标准<select>..</select>元素,我有一个由 selectToUISlider() 创建的滑块问题是当滑块移动时,下拉菜单中的选项不会改变。此外selected="selected",当滑块移动时,它会在每个元素上设置,以便在提交表单时发布多个值,以模拟多选选项。

我花了很长时间试图弄清楚这一点,但没有运气。有没有人有任何想法?

4

2 回答 2

1

在尝试实现您提到的类似功能时,我遇到了同样的问题。

问题是,每当移动滑块时,它会一直设置选择列表的“选定”属性,而不会清除先前选择的项目。在将新选项设置为选中之前,我添加了一个脚本来清除以前选择的选项。

在 jquery 脚本文件的第 92 行(..ish)处查找/搜索文本。

   //control original select menu
   var currSelect = jQuery('#' + thisHandle.attr('id').split('handle_')[1]);
   currSelect.find('option').eq(ui.value).attr('selected', 'selected');

并在两行之间插入此代码...

   currSelect.find('option[selected]').removeAttr('selected');

所以最终的代码应该是这样的......

   //control original select menu
   var currSelect = jQuery('#' + thisHandle.attr('id').split('handle_')[1]);
   currSelect.find('option[selected]').removeAttr('selected');
   currSelect.find('option').eq(ui.value).attr('selected', 'selected');

我希望它有所帮助。随时问任何进一步的问题。

于 2012-08-03T00:47:10.893 回答
1

我知道这已经很老了,但我最近遇到了这个问题,也许我的解决方案可以帮助某人。在使用更新版本的 jQuery (>jQuery 1.6.1) 和 JQueryUI 并尝试将 selectToUISlider 与它们一起使用时,我遇到了同样的问题。

我发现我的解决方案(使用属性插入的属性)只是在第 98 行的 selectToUISlider.js 脚本中替换

这个

currSelect.find('option').eq(ui.value).attr('selected', 'selected');

为了这

currSelect.find('option').eq(ui.value).prop('selected', true);

您可以在此答案中找到“为什么”,这有助于我找到此解决方案: https ://stackoverflow.com/a/5876747/2285806

您还可以阅读 prop() 的 jQuery API 条目以查找更多信息并阅读有关浏览器向后兼容性的重要说明:http: //api.jquery.com/prop/

于 2014-04-22T10:17:32.983 回答