我正在创建一个小页面,用户可以在jeditable / jquery的帮助下修改类别和项目的名称。
该脚本有效但在Firefox中有点奇怪。如果我双击我的可编辑范围,它将被输入字段替换。如果我专注于其他一些元素,除了另一个可编辑的跨度,它就会消失。我还应该注意,当光标第一次进入输入框时光标会消失。
如果我想改变输入字段,我必须再次关注它,然后点击其他地方。
它在IE中运行良好。
以下是我的jquery定义:
$(document).ready(function(){
//this will be executed once the dom is loaded
$(".categories").sortable({
connectWith: ".categories",
dropOnEmpty: true,
tolerance: "pointer",
cancel: ".sections"
}).disableSelection();
$(".sections").sortable({
connectWith: ".sections",
items: "li:not(.empty)",
dropOnEmpty: true
}).disableSelection();
$(".section_edit").editable("serve_edit_section_request.php", {
tooltip: "Click to edit...",
select: true,
style: "inherit",
cssclass: "edit_input_box",
event: "dblclick",
id: this.id,
name: "section_name",
onblur: "cancel"
})
$(".category_edit").editable("serve_edit_category_request.php", {
tooltip: "Click to edit...",
select: true,
style: "inherit",
cssclass: "edit_input_box",
event: "dblclick",
id: this.id,
name: "category_name",
onblur: "cancel"
})
});
我的清单:
<ul class='categories'>
<li id='1' class='category'><span id='edit_1' class='category_edit'>Category 1</span>
<ul id='cat_1' class='sections'>
<li class='empty'></li>
<li id='20' class='section'><span id='edit_20' class='section_edit'>My Section 1</span></li>
</ul>
</li>
<li id='2' class='category'><span id='edit_2' class='category_edit'>Category 2</span>
<ul id='cat_2' class='sections'>
<li class='empty'></li>
<li id='21' class='section'><span id='edit_21' class='section_edit'>My Section 2</span></li>
<li id='22' class='section'><span id='edit_22' class='section_edit'>My Section 3</span></li>
</ul>
</li>
<li id='3' class='category'><span id='edit_3' class='category_edit'>Category 3</span>
<ul id='cat_3' class='sections'>
<li class='empty'></li>
<li id='23' class='section'><span id='edit_23' class='section_edit'>My Section 4</span></li>
</ul>
</li>
<li id='4' class='category'><span id='edit_4' class='category_edit'>Category 4</span>
<ul id='cat_4' class='sections'>
<li class='empty'></li>
<li id='809' class='section'><span id='edit_809' class='section_edit'>My Section 5</span></li>
</ul>
</li>
</ul>
(请原谅jquery东西的不良标签,我不明白为什么它会偶尔出现)
感谢您的帮助! :)
答案 0 :(得分:1)
我有同样的问题:
问题是由disableSelection()引起的。 sortable()的常见用法不会使用textareas,因此大多数人都不会发现以下细微之处:
disableSelection()在FireFox中使用CSS特征,因此在你应用disableSelection()的所有后代中都能感受到所有效果。因为你只想影响直接的孩子(就像sortable()只对直接孩子有效)你应该这样做:
$(".categories").sortable({
connectWith: ".categories",
dropOnEmpty: true,
tolerance: "pointer",
cancel: ".sections"
});
$(".categories > *").disableSelection();
OR
$(".categories").sortable({
connectWith: ".categories",
dropOnEmpty: true,
tolerance: "pointer",
cancel: ".sections"
}).children().disableSelection();
(来自JQuery Docs:“另请注意:虽然parents()会查看所有祖先,但children()只会考虑直接的子元素。”)