如何在JQuery Tagit中获得弹出的li?

时间:2014-09-26 02:14:35

标签: jquery tag-it

我现在正在使用JQuery Tagit插件编写新闻列表。(http://jquery.webspirited.com/2011/02/jquery-tagit-a-jquery-tagging-plugin/

我的网页上有一个新闻列表,每个都有自己的标签。我必须跟踪哪个标签被添加到新闻中或从新闻中弹出。

因此,我有以下代码:

<script>
    $('.tagBox').tagit({
        tagsChanged:function(value,action,element){
             alert(value + " is " + action + 
                   " to/from " + element.closest("ul").attr("id"));
        }
    });

</script>

我有以下html:

<ul class="tagBox" id="news1">
</ul>

<ul class="tagBox" id="news2">
</ul>

当我向新闻添加标签时,这些代码很有效。但是,当我尝试删除标记时,该元素为空。

那么,当从标签中弹出标签时,如何获得ul的相应id?

1 个答案:

答案 0 :(得分:0)

onmousedown函数绑定到tagit-close类,该类在删除标记之前将有问题的tagBox的ID存储到变量中。

tagsChanged-event使用onclick/onmouseup,这意味着只有在您释放鼠标按钮后才会调用它。
因此,如果您将onmousedown函数附加到代码上的“x”(<a class="tagit-close">x</a>),则可以确保在删除代码之前捕获该事件。


脚本(样机)

var deletedTagsBox = ""; //global variable

$(".tagit-close").mousedown(function(){
    deletedTagsBox = $(this).closest("ul").attr("id"));
});

然后在你原来的功能中:

$('.tagBox').tagit({
    tagsChanged:function(value,action,element){
         var tagBoxID = "";
         if (element == null) {
             tagBoxID = deletedTagsBox;
         } else {
             tagBoxID = element.closest("ul").attr("id");
         }
         alert(value+" is "+action+" to/from "+tagBoxID);
    }
});