繁体   English   中英

代码适用于jquery 1.8.3,但不适用于1.9.1及更高版本

[英]Code works on jquery 1.8.3 but not work on 1.9.1 and up

我有一个适用于1.8.3的代码(键入内容时在模糊或聚焦后成功添加了SUFFIX),但不适用于1.9.1或更高版本。

<div id="mmm">
<input type=text class="gen"><br>
<input type=text class="gen"><br>
<input type=text class="gen">
</div> 


$("#mmm").on('focusout change blur','.gen', function()  {
   var myvar=$(this);
   coreid=this.value;       
    $.ajax (
    { 

        url: '/echo/html/',
        success: function (data,status) {
            myvar.empty().attr("value", coreid + "MYSUFFIX" );
        }    
    })
})

在1.8.3 /上检查Fiddle /如果更改为1.9.1或更高版本,则代码停止有效(键入内容时末尾不添加后缀)

http://jsfiddle.net/6nch5fp2/5/

通过阅读《 jQuery Core 1.9升级指南》,您将了解发生了什么变化。 对您而言重要的是:

jQuery 1.6引入了.prop()方法来设置或获取节点上的属性,并且不建议使用.attr()来设置属性。 但是,在特定情况下,最高1.9版本仍支持使用.attr()。

因此将.attr更改为.prop

$("#mmm").on('focusout change blur', '.gen', function () {
    var myvar = $(this);
    coreid = this.value;
    $.ajax({
        url: '/echo/html/',
        success: function (data, status) {
            myvar.empty().prop("value", coreid + "MYSUFFIX");
        }
    })
})

jsFiddle示例

您还会注意到,如果包含jQuery Migrate插件,则可以继续使用.attr()

jsFiddle示例

就像Terry在下面指出的那样,.val()可能是不管的方式: myvar.val(coreid + "MYSUFFIX");

jsFiddle示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM