【问题标题】:jquery wrapped CSS selectors differ for chrome and IE 11jquery 包装的 CSS 选择器对于 chrome 和 IE 11 不同
【发布时间】:2016-09-19 21:07:43
【问题描述】:

我有一个 jquery 包装的 css 选择器,例如$($("#selector").find('input[type="textarea"])'。我可以通过 this$($("#selector").find('input[type="textarea"]).val(someValue)' 将值放入 chrome 中的输入区域,但不能通过 Internet Explorer 11。

在开发者工具中检查时, chrome 给了我

[ 

input style=​"float:​ left;​ width:​ 70px;​ height:​ 21px;​ margin:​ 4px 2px 4px 4px;​" autocomplete=​"off" type=​"textarea" id=​"jqxWidget15f259b7" class=​"jqx-widget jqx-widget-energyblue jqx-input jqx-input-energyblue jqx-rc-all jqx-rc-all-energyblue jqx-widget-content jqx-widget-content-energyblue"

]

但是 Internet Explorer 给了我一些不同的东西,比如对象数组

[object Object]{context: undefined, jquery: "2.1.1", length: 0, prevObject: Object {...}, selector: "input[type=..."}

有什么方法可以让我制作一个通用的 jquery 包装器来为两个浏览器的输入文本区域插入一个值?

【问题讨论】:

  • 在您的代码中,我认为您错过了以下语句中的单引号:$($("#selector").find('input[type="textarea"]).val(someValue)。应该是$($("#selector").find('input[type="textarea"]').val(someValue)。尝试在关闭方括号后添加单引号。
  • 不,那不是问题。当我在问题中输入 jquery 时,可能会错过报价。它在 Chrome 中完全正常,但在 IE11 中无法获得任何东西

标签: javascript jquery html css internet-explorer


【解决方案1】:

这是 IE11 的错误。您应该在 HTML 和 JavaScript 代码中指定 text 而不是 textarea

INPUT 元素没有textarea 类型。如果为type 属性指定了此类无效类型,则将其视为默认text 类型,并且type 属性(非属性)返回text。 IE 的 bug 是不必要地将type 属性值更新为text

【讨论】:

    【解决方案2】:

    CSS 是特定于浏览器的,因此无法制作通用的 jquery 包装器。最好是特定于浏览器的。您可以像这样更改代码,

    $.browser.chrome = /chrom(e|ium)/.test(navigator.userAgent.toLowerCase());
            if ($.browser.chrome)
            {
                **Your Logic for Chrome**
            }
            else {
                **IE logic**
            }
    

    您可能必须为此添加 JQUERY MIGRATE PLUGIN。

    【讨论】:

    • 感谢 Navaneeth 的建议 :)
    猜你喜欢
    • 2010-09-16
    • 2011-01-25
    • 2019-10-26
    • 1970-01-01
    • 2015-06-21
    • 2014-03-02
    • 2016-08-09
    • 2015-07-04
    • 1970-01-01
    相关资源
    最近更新 更多