JQuery phototag:很少删除操作 - 最后不能使用其他操作

时间:2014-02-02 09:22:17

标签: javascript jquery html

我正在使用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;
        }
    );
};

我尝试了几种方法:

  1. 在link.click中检查元素是否在ul列表中的最后一行并在删除后删除最后一项中的逗号(通过.replace())

  2. 在所有操作后,只需删除link.click中最后一个“li”中的逗号

  3. 为列表添加/绑定(删除)并在那里执行“删除逗号操作”。

  4. 无论如何,如果我删除像2,3,1这样的项目 - 我无法删除3.点击事件就不起作用了(通过函数内的警报测试)。

    使用源代码一切顺利 - 我可以按任何顺序删除项目。

    如果删除了最后一项,您能告诉我如何删除上一项中的逗号吗?

    我找到了解决方案!添加逗号不仅仅是文本,而是像这样:

    <span class="comma">, </span>
    

    然后通过.remove()删除它; 我曾经通过以下方式删除逗号:

    string=$('ul li').last().html().replace(/,/g, '');
    string=$('ul li').last().html(string);
    

    可能删除了删除标记链接的点击事件。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案!添加逗号不仅仅是文本,而是像这样:

<span class="comma">, </span>

然后通过.remove()删除它;我曾经通过以下方式删除逗号:

string=$('ul li').last().html().replace(/,/g, '');
string=$('ul li').last().html(string);

可能删除了删除标记链接的点击事件。