1

我正在努力将此 Bootstrap-tag插件集成到我的应用程序中。它与 jQuery 1.8.3 一起工作得很好,你可以在 GitHub 项目页面上看到它。

我的应用程序使用的是 JQuery 1.7.1。它在 Chrome 中效果很好,但在 IE 中效果不佳(不足为奇)。我花了两天时间试图理解为什么没有运气(我是 jQuery/JS 新手)。

我创建了一个jsFiddle,它在 IE 9 中运行时捕获并显示此错误。

具体错误是:

SCRIPT438:对象不支持属性或方法“追加”

bootstrap-tag.js,第 117 行字符 5

它指的是这一行/代码:

$('<span class="tag">')
  .text(value)
  .append($('<button type="button" class="close">&times;</button>')
    .on('click', function () {
      that.remove(that.element.siblings('.tag').index($(this).closest('.tag')))
    })
  )
  .insertBefore(that.element)

问题: 知道为什么 IE9 抱怨append无法识别吗?

4

1 回答 1

2

好吧,确实旧版本的 jQuery 在 IE9 的 text() 函数之后不会返回对 jQuery 对象的引用。

基本上,解决方案是不使用文本功能,而是在创建跨度时附加文本。因此,我在第 117 行的 bootstrap-tag.js 中更改为以下代码来解决问题。

遵循JS Fiddle 解决方案

之前(IE9 越野车):

$('<span class="tag">')
  .text(value)
  .append($('<button type="button" class="close">&times;</button>')
    .on('click', function () {
      that.remove(that.element.siblings('.tag').index($(this).closest('.tag')))
    })
  )
  .insertBefore(that.element)

之后(固定):

$('<span class="tag">' + value + '</span>')
    .append($('<button type="button" class="close">&times;</button>')
    .on('click', function () {
      that.remove(that.element.siblings('.tag').index($(this).closest('.tag')))
    })
  )
  .insertBefore(that.element)

希望能帮助到你。

于 2013-08-16T22:52:45.630 回答