1

我有一个标记插件(http://xoxco.com/projects/code/tagsinput/)唯一的问题是,我经常将内容加载到同一个 DOM 中 - 所以.tagsInput()再次调用 gets。问题是,当它多次发生时,插件将无法工作 - 所以首先我需要以某种方式解除绑定,但没有内部方法......

4

2 回答 2

2

您没有提供太多上下文,但如果您想绑定和取消绑定,请查看on()jQuery off()

<!DOCTYPE html>
<html>
<head>
  <style>
button { margin:5px; }
button#theone { color:red; background:yellow; }
</style>
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>
  <button id="theone">Does nothing...</button>
<button id="bind">Add Click</button>
<button id="unbind">Remove Click</button>
<div style="display:none;">Click!</div>
<script>
function aClick() {
  $("div").show().fadeOut("slow");
}
$("#bind").click(function () {
  $("body").on("click", "#theone", aClick)
    .find("#theone").text("Can Click!");
});
$("#unbind").click(function () {
  $("body").off("click", "#theone", aClick)
    .find("#theone").text("Does nothing...");
});
</script>

</body>
</html>

这是演示

于 2013-06-20T13:41:05.713 回答
1

我找到了一个涉及编辑jquery.tagsinput.js文件的解决方法。在 200-202 行附近的某个地方有一个条件

if (!id || delimiter[$(this).attr('id')]) {
id = $(this).attr('id', 'tags' + new Date().getTime()).attr('id');
}

需要注释掉。它解决了“重新生成”的问题。它是否会产生其他问题 - 我不知道,对我来说还没有。


我跟踪了变量iddelimiter[$(this).attr('id')]并发现即使它被设置为参数 - 第一次启动函数delimiter[$(this).attr('id') ]未定义(我想知道为什么,因为它是在参数中设置的) - 条件为假并且id保持不变 - 给定 id 的名称。下次启动它 - delimiter 不再为空并且 id 等于给定 id 的相同名称 - 条件为 true 并且使用getTime生成新的 id 名称。这给出了问题 - 稍后在代码中是不可能知道正确的 html 输入 id值。

于 2013-07-30T17:09:22.553 回答