我有一个结构如下,我想将可拖动属性更改为false。 我该如何做到这一点在jQuery中? 谢谢。在jQuery中更改属性
<div id="top1">
<span id="s1" draggable="True">a</span>
<span id="s2" draggable="True">b</span>
</div>
我有一个结构如下,我想将可拖动属性更改为false。 我该如何做到这一点在jQuery中? 谢谢。在jQuery中更改属性
<div id="top1">
<span id="s1" draggable="True">a</span>
<span id="s2" draggable="True">b</span>
</div>
$("#s1").attr("draggable", "False");
它很容易做到。你会遍历所有的跨度,然后使用‘ATTR’的jQuery的方法来获得‘拖动’属性并将其设置为false
$("span").each(function(){
if($(this).attr("draggable")){
$(this).attr("draggable","false");
}
});
如图jQuery的文档在attributes,你可以设置一个元素的属性使用attr()
方法。你的情况:
$("#s2").attr("draggable", "False");
如果你想改变所有元素与属性draggable
为false,您可以使用attribute selector第一,像这样:
$('[draggable]').attr("draggable", "False");
现在,如果你想扭转值,以便当前全部为真,且当前所有虚假都为真,则必须使用attribute equals selector将两个集都存储到其自己的变量中。否则,您将全部切换为false,并且不会将哪些已经为false设置为true。因此,像:
var all_draggable = $('[draggable="True"]');
var all_not_draggable = $('[draggable="False"]');
all_draggable.attr("draggable", "False");
all_not_draggable.attr("draggable", "True");
如果你想只,TRUE那些被标记虚假所有的
$("span[draggable='True']").attr('draggable', 'False');
更改属性跨越
$("span").attr('draggable', 'False');
如果true和false是唯一选项,那么这两个选项的作用相同,因为所有跨度都将被设置为false。但是,如果有第三种选择,那么你是对的。 – Anthony 2012-03-05 02:45:02
@Anthony或者其他'span'用于不同的操作,你不能使用第二个代码 – blackpla9ue 2012-03-05 02:57:48
我明白你的想法。我以为你的意思是改变所有跨度可拖动的属性,而所有跨度的可拖动属性都设置为false,这到底是一回事。 – Anthony 2012-03-05 03:04:13
这会不会加属性跨越不具有'draggable'属性?你不能使用'attr()'一次设置所有选定元素的属性,如:'$(“span”)。attr(“draggable”,“false”);'而不是使用'each '循环? – Anthony 2012-03-05 00:41:12
我已经更新了我的答案,只有当前跨度具有“可拖动”的属性时才会使其为false。 – DG3 2012-03-05 01:06:51
但为什么使用'if'或'each'?你只能指定'draggable'属性的'spans',并通过使用':'(“span [draggable]”)。attr(“draggable”,“false”)来设置它们全部具有相同的值:'只是好奇如果你发现使用每个更有效或更快。 – Anthony 2012-03-05 02:48:30