我正在使用Karl Mendes的jquery phototag插件。这是为了在图片上标记人物。 添加标记时 - person附加在内联列表(ul li)中,逗号自动添加到上一个li:
var createTagItemForList = function( tagJSON, image ){
if ($('.photoTag-taglist').html().length>0) {
$('.photoTag-taglist li').last().append(', ');
};
var item = $('<li></li>');
if(tagJSON.url){
var link = $('<a href="'+ tagJSON.url +'">'+ tagJSON.text +'</a>');
item.append(link);
}else{
item.append(tagJSON.text);
}
if(tagJSON.isDeleteEnable){
var deleteLink = $('<a id="'+ options.imageWrapBox.tagListRemoveItemIdPrefix + tagJSON.id +'" class="'+ options.tag.deleteLinkCssClass +'" href="#'+ tagJSON.id +'">'+ options.literals.removeTag +'</a>');
registerEventsForDeleteLink(deleteLink,image);
item.append(' (');
item.append(deleteLink);
item.append(')');
}
return item;
}
但每个人都有(x)链接删除它,我必须在删除最后一个时删除前一个li中的逗号。 当我删除1,2,3等项目时 - 一切顺利。 但当我删除它像2,3,1,我可以删除2,反正不能删除3,反正可以删除1。 删除功能的源代码:
var registerEventsForDeleteLink = function( link, image ){
link.click(
function(e){
e.preventDefault();
var tagId = link.attr('href').substring(1);
var parameters = getParametersForImage(image);
parameters[options.tag.tagIdParameter] = tagId;
$.getJSON(options.deleteTagsUrl,parameters,
function( data ){
if(!data.result)
manageError(data);
}
);
//next line removes "li" so all i say next was tried instead of this line
$('#' + options.tag.deleteLinkIdPrefix + tagId).parent().remove();
$('#' + options.imageWrapBox.deleteLinkIdPrefix + tagId).click();
return false;
}
);
};
我尝试了几种方法:
在link.click中检查元素是否在ul列表中的最后一行并在删除后删除最后一项中的逗号(通过.replace())
在所有操作后,只需删除link.click中最后一个“li”中的逗号
为列表添加/绑定(删除)并在那里执行“删除逗号操作”。
无论如何,如果我删除像2,3,1这样的项目 - 我无法删除3.点击事件就不起作用了(通过函数内的警报测试)。
使用源代码一切顺利 - 我可以按任何顺序删除项目。
如果删除了最后一项,您能告诉我如何删除上一项中的逗号吗?
我找到了解决方案!添加逗号不仅仅是文本,而是像这样:
<span class="comma">, </span>
然后通过.remove()删除它; 我曾经通过以下方式删除逗号:
string=$('ul li').last().html().replace(/,/g, '');
string=$('ul li').last().html(string);
可能删除了删除标记链接的点击事件。
答案 0 :(得分:0)
我找到了解决方案!添加逗号不仅仅是文本,而是像这样:
<span class="comma">, </span>
然后通过.remove()删除它;我曾经通过以下方式删除逗号:
string=$('ul li').last().html().replace(/,/g, '');
string=$('ul li').last().html(string);
可能删除了删除标记链接的点击事件。