【问题标题】:Prevent selectmenu widget from closing防止选择菜单小部件关闭
【发布时间】:2016-10-08 16:04:53
【问题描述】:

我有一个带有许多选项的选择菜单小部件。我想添加一个“显示更多”按钮作为最后一个选项,然后可以加载更多选项并刷新小部件,或者只是切换它们的可见性以显示它们,如果它们已经加载但不可见(任何一种方法没关系,我不介意)。

问题是点击“显示更多”选项然后关闭选择菜单本身!必须有一个解决方法,因为允许选择多个选项不会在您单击小部件时关闭它。

有什么想法吗?

【问题讨论】:

  • 也许我可以包含一个数据占位符标签或禁用标签。这将实现我的目标,并且我可以将其样式设置为相同。点击时他们会触发事件吗?如果是这样,我怎么称呼它?

标签: javascript jquery jquery-mobile jquery-ui-selectmenu


【解决方案1】:

是的,禁用选项可能会有所帮助

但首先要给它一个 id,比如:

 <option id="other" disabled style="color: black; text-align: center;">Other choices</option>

然后是 js 部分(使用 jQuery):

function goToOther(){
    var url = "http://qwant.com";
    window.location = url;
}


$( document ).ready(function() {
    $('#other').on('click', function(){
       goToOther();
    });
});

【讨论】:

  • 这不起作用,因为禁用使其不可点击...还有其他想法吗?
  • 如果它是 jquery-mobile Selectmenu 小部件,则可以点击。
  • 谢谢@piem,但不幸的是我还是不能让它工作,看看this fiddle
  • 如果您将 data-native-menu 设置为“true”,它会起作用。之后都是css
  • 好吧,但我需要它是一个 jQuery 移动样式的对象。有没有办法让它与 data-native-menu=false 一起工作?
【解决方案2】:

将 data-native-menu 设置为 true 并使用 css 增强菜单 jqm 样式,例如:

.fakeList{background-clip: padding-box;
	background-color: rgb(246, 246, 246);
	border-bottom-color: rgb(221, 221, 221);
	border-bottom-left-radius: 5px;
	border-bottom-right-radius: 5px;
	border-bottom-style: solid;
	border-bottom-width: 1px;
	border-left-color: rgb(221, 221, 221);
	border-left-style: solid;
	border-left-width: 1px;
	border-right-color: rgb(221, 221, 221);
	border-right-style: solid;
	border-right-width: 1px;
	border-top-color: rgb(221, 221, 221);
	border-top-left-radius: 5px;
	border-top-right-radius: 5px;
	border-top-style: solid;
	border-top-width: 1px;
	box-shadow: rgba(0, 0, 0, 0.15) 0px 1px 3px 0px;
	color: rgb(51, 51, 51);
	cursor: pointer;
	display: block;
	font-family: sans-serif;
	font-size: 16px;
	font-weight: 700;
	line-height: 20.8px;
	margin-bottom: 0px;
	margin-left: 0px;
	margin-right: 0px;
	margin-top: 0px;
	opacity: 1;
	overflow: hidden;
	overflow-x: hidden;
	overflow-y: hidden;
	padding-bottom: 11.2px;
	padding-left: 16px;
	padding-right: 40px;
	padding-top: 11.2px;
	position: relative;
	text-align: center;
	text-decoration: none;
	text-decoration-color: rgb(51, 51, 51);
	text-decoration-line: none;
	text-decoration-style: solid;
	text-overflow: ellipsis;
	text-shadow: rgb(243, 243, 243) 0px 1px 0px;
	white-space: nowrap;
	-moz-user-select: none;
}

然后在js中:

$( document ).ready(function() {
$('option').addClass('fakeList');
    $('#showMore').on('click', function(){
       alert("do show more");
    });
});

【讨论】:

  • 谢谢@piem,它仍然对我不起作用,尽管这可能是浏览器兼容性问题。我正在 Mac 上的 Safari 上进行测试,尽管我实际上只需要它在 iOS 上的 Safari 上工作。这是我为我的公司构建的网络应用程序,他们为我们提供 iPhone,所以现阶段我什至懒得在其他平台上进行测试。如果我设置 data-native-menu=true,那么我会得到一个 iOS 生成的滚轮,它甚至不会让我选择“禁用”选项。不确定这个策略是否会奏效。也许我需要构建自己的弹出窗口并手动完成所有操作......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-01
  • 1970-01-01
  • 2018-02-16
  • 2017-08-29
  • 2020-06-12
相关资源
最近更新 更多