【发布时间】:2014-02-22 22:56:36
【问题描述】:
我有一个 div,其中包含在 load 事件上使用 jQuery 创建的列表。当我单击列表项时,项目文本被复制到可编辑的 div 中。编辑文本后,我单击一个按钮并替换新的列表项文本。这是代码:
<div id="div"></div>
<div id="editor" contenteditable='true'></div>
<input type="button" value="replace text" id="replace"/>
Javascript
var listID, itemINDEX;
var item1 = $( "<li/>", {
"id": "li1",
text: "list 1 - item 1",
click: function() {
//alert( jQuery(this).index() );
}
});
var item2 = $( "<li/>", {"class": "test3", text: "list 1 - item 2"});
var list1 = $( "<ol/>", {"id": "list-1"}).append( item1 ).append( item2 );
list1.appendTo('#div');
$(document).on( "click", "li", function(){
$("#editor").text( $(this).text() );
itemINDEX = $(this).index();
listID = $(this).closest("ol").attr("id");
} );
$('#replace').click(function(){
if(listID){
$("#"+listID).find("li").eq(itemINDEX).text( $("#editor").text() );
} else {
alert('this list have no id! I dont know where the text goes');
}
});
演示:http://jsfiddle.net/frankroger/FKUkb/32/
如您所见,列表 ID 是使用 jquery 动态创建的。这个 id 让我可以找到列表并在正确的位置替换文本。
我的问题:你知道不使用 id 的方法吗?
我想对标题、段落、链接等所有元素做同样的事情...我不想为每个 html 元素创建一个唯一的 id。
创建类似系统的另一种方法是让用户在一些 document.execCommand(一种所见即所得)的帮助下直接将 html 元素插入可编辑的 div 中。通过这种方式,用户可以在可编辑的 div 中直接编辑元素文本,毕竟我应该做的是获取 html 并将其存储在数据库中......但我不想处理不同的浏览器comportment.. .例如当你按ENTER键时,FF插入BR,webkit DIV和IE/Opera P...
【问题讨论】:
-
使用 .class 或标签名称。例如:
$('li').text('hello'); // all <li> tags will have the text hello -
您是 100% 反对为每个元素使用 id,还是只是不想手动为每个标签分配 id?
-
我不想手动为每个标签分配一个 id...
标签: javascript jquery html dom