JQuery append在IE9和JQuery 1.7.1中不起作用

JQuery append not working in IE9 and JQuery 1.7.1

本文关键字:JQuery 不起作用 append IE9      更新时间:2023-09-26

我正在努力将这个Bootstrap标签插件集成到我的应用程序中。正如你在GitHub项目页面上看到的那样,它与jQuery 1.8.3配合得很好。

我的应用程序正在使用JQuery 1.7.1。它在Chrome中运行得很好,但在IE中却不行(这并不奇怪)。我花了两天时间试图理解为什么没有运气(我是一个jQuery/JS新手)。

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

具体错误为:

SCRIPT438:对象不支持属性或方法"append"

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没有被识别吗?

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

基本上,解决方案不是使用text函数,而是在创建跨度时附加文本。所以我在第117行的bootstrap-tag.js中改为下面的代码,解决了这个问题。

遵循JS Fiddle解决方案

之前(IE9 Buggy):

$('<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)

希望能有所帮助。