【发布时间】:2012-03-05 00:22:23
【问题描述】:
我有一个结构如下,我想将可拖动属性更改为false。 我怎么能在jquery中做到这一点? 谢谢。
<div id="top1">
<span id="s1" draggable="True">a</span>
<span id="s2" draggable="True">b</span>
</div>
【问题讨论】:
我有一个结构如下,我想将可拖动属性更改为false。 我怎么能在jquery中做到这一点? 谢谢。
<div id="top1">
<span id="s1" draggable="True">a</span>
<span id="s2" draggable="True">b</span>
</div>
【问题讨论】:
如果您只想,TRUE 标记为 false
$("span[draggable='True']").attr('draggable', 'False');
更改所有跨度的属性
$("span").attr('draggable', 'False');
【讨论】:
spans 用于不同的操作,不能使用第二个代码
$("#s1").attr("draggable", "False");
【讨论】:
这很容易做到。您将遍历所有跨度',然后使用 jquery 的 'attr' 方法来获取 'draggable' 属性并将其设置为 false
$("span").each(function(){
if($(this).attr("draggable")){
$(this).attr("draggable","false");
}
});
【讨论】:
draggable 属性的跨度中吗?您不能使用attr() 一次性为所有选定元素设置属性,例如:$("span").attr("draggable","false"); 而不是使用each 循环?
if 或each?您可以只指定属性draggable 的spans,并使用以下方法将它们全部设置为相同的值:$("span[draggable]").attr("draggable","false"); 只是好奇您是否发现使用每个属性更有效或更快。
如attributes 上的jquery 文档所示,您可以使用attr() 方法设置元素的属性。在你的情况下:
$("#s2").attr("draggable", "False");
如果您想将所有具有draggable 属性的元素更改为false,您可以先使用attribute selector,如下所示:
$('[draggable]').attr("draggable", "False");
现在,如果您想反转这些值,以便所有当前为真变为假,所有当前为假变为真,您必须使用 attribute equals selector 将这两个集合存储到它们自己的变量中。否则,您将全部切换为假,并且不会将哪些已经为假的设置为真。所以像:
var all_draggable = $('[draggable="True"]');
var all_not_draggable = $('[draggable="False"]');
all_draggable.attr("draggable", "False");
all_not_draggable.attr("draggable", "True");
【讨论】: