【发布时间】:2016-10-30 06:26:18
【问题描述】:
如何在以下示例中单击可选元素后禁用它?我还需要更改它的 CSS 样式。
$(function(){
$("#selectable").selectable({
stop: function() {
var result = $( "#select-result" ).empty();
$( ".ui-selected", this ).each(function() {
var index = $( "#selectable li" ).index( this );
result.append( " #" + ( index + 1 ) );
});
}
});
});
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>jQuery UI Selectable - Serialize</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<style>
#feedback { font-size: 1.4em; }
#selectable .ui-selecting { background: #FECA40; }
#selectable .ui-selected { background: #F39814; color: white; }
#selectable { list-style-type: none; margin: 0; padding: 0; width: 60%; }
#selectable li { margin: 3px; padding: 0.4em; font-size: 1.4em; height: 18px; }
</style>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
</head>
<body>
<p id="feedback"><span id="select-result">none</span>.</p>
<ol id="selectable">
<li class="ui-widget-content">Item 1</li>
<li class="ui-widget-content">Item 2</li>
</ol>
</body>
</html>
我试着做这样的
$("#selectable li").index(this).css('text-decoration', 'line-through');
但它不起作用。
这个想法是在元素被点击后禁用它,以便用户无法再次选择它。
【问题讨论】:
-
so that user could not select it again- 选择的选项不能被选择两次是很自然的。您希望永久选择该选项吗?如果用户选择了另一个选项,前一个选项应该保持选中状态还是从选择中删除并禁用? -
@ArturFilipiak 如果用户选择另一个选项,则应从选择中删除并禁用前一个选项。另一个期望的能力是将整个组件重置为初始状态......
标签: javascript jquery css jquery-ui jquery-ui-selectable