我正在使用Jquery-ui。 我在一个页面中有不同的可丢弃的ul(s),以及不同的可拖动的li(s)。我想要的是: 1. ul的标题彼此不同,如“FUNCTION”,“BUG”等。 2.李的班级彼此不同,如“.FUNCTOIN”,“。BUG”等。 3.标题为“FUNCTION”的ul只能接受带有“.FUNCTION”等级的li。 4.根据存储在数据库中的一些值,只有在视图中创建它们时才能知道ul的标题。
然后我遇到了一些问题,这里有不同的饱和度:
如果我使用常数值,它运作良好,如:
$("ul.droppable").droppable({
accept: ".FUNCTION",
虽然以下所有方式都失败了:
$("ul.droppable").droppable({
accept: "." + $(this).attr("title"),
$("ul.droppable").droppable({
accept: '.' + $(this).attr("title"),
$("ul.droppable").droppable({
accept: "\." + $(this).attr("title"),
$("ul.droppable").droppable({
accept: '\.' + $(this).attr("title"),
所以我把“。”在标题中尝试了以下内容,但所有这些都失败了:
$("ul.droppable").droppable({
accept: $(this).attr("title"),
顺便说一下,当我的意思是“失败”时,没有错误,弹出等等。可放置的东西不起作用(不活跃,不会悬停,不能掉线。)。
我发现了很多的“魔法”或“接受”的Q / A,但是他们都使用了可以在运行时之前定义的东西。所以“接受”只能使用恒定值,或者我使用它的方式是错误的? 感谢您的回答或建议或评论可能会有所帮助。
根据Xnake的回答,这样做的方法是:
在旧代码droppable之前,添加前3行:
$("ul.droppable.accept").droppable({
accept: function (e) { if (e.hasClass($(this).attr('accept'))) return true; }
});
$("ul.droppable").droppable({
activeClass: "ui-state-default",
... //this is the old code.
这意味着如果我们给droppable ul一个“accept”类,它只接受带有某个类的对象;否则,它可以接受任何可拖动的。
然后在视图中:
<ul class = "stories-of-category droppable accept" accept = "@map.Type" >
...
</ul>
如果任何具有@ map.Type同名类的对象,则可以将其删除。例如:
<ul title = ".."> //this is another ul.
<li class = "@map.Type">
@map.Title
</li>
...
</ul>
答案 0 :(得分:8)
您可以将accept
中的droppable()
替换为函数,并在其中指定您的条件:
accept: function(e){
if(e.hasClass($(this).attr('title'))) return true;
}
或更短:
accept: function(e){
return e.hasClass($(this).attr('title'));
}
感谢。