簡體   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