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

时间:2014-10-08 20:28:39

标签: javascript jquery

我有一个适用于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上检查小提琴/如果您更改为1.9.1或更高版本,则代码停止有效(在输入内容时未添加后缀)

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

1 个答案:

答案 0 :(得分:3)

通过阅读jQuery Core 1.9 Upgrade Guide,您会看到发生了哪些变化。对您来说重要的是:

  

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 example

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

<强> jsFiddle example

正如特里在下面提到的那样,无论如何,.val()可能是最好的方法:myvar.val(coreid + "MYSUFFIX");

<强> jsFiddle example