2015-01-05 54 views
0

我有一個jQuery函數限制字符串10個字符的jQuery動態元素

$('.class').reducetext(10); 

功能

$.fn.reducetext=function(length){ 
    $(this).text($(this).text().substr(0,length)) 
} 

我會把這個中的document.ready $(」一流)。 reducetext(10);

因此它將減小的.class元素

的字符串我想是

這些」的.class'元素將動態加載用ajax

所以每次當AJAX呼籲 我可以調用$('。class')。reducetext(10);

,但我不想把這種對每一個Ajax調用

內的一個電話

我想這樣做

,如果它是一個點擊或任何類似的事件,我可以「的」 使用,但爲此,我應該寫什麼代碼?

+1

我不敢肯定是否會工作,但給一個嘗試'$上( '改變 '(' 類'。)。 ,function(){$('。class')。reducetext(10);});' –

+1

'我不想在每個Ajax調用時調用這個函數。 –

+0

你唯一的選擇是將該方法添加到您想要更改的特定ajax調用的成功處理程序中的返回內容 – adeneo

回答

1

您不需要重新使用$('.class').reducetext(10);,因爲您沒有處理任何含有.class元素的事件。事件委派是爲動態創建的元素完成的,但不需要像使用簡單用例一樣使用...

即使對於動態創建的元素,也會應用類似$(elem).text('...')之類的東西。

但是等等!您正在使用ajax調用來插入元素,然後您有另一個選項,以便您可以只註冊一次像$('.class').reducetext(10);這樣的方法一次。爲此,您需要使用:

$(document).on('DOMSubTreeModified propertychange',function(){ 
    $('.class').reducetext(10); 
}); 

對於IE,您使用propertychange方法。

+0

所以你說,所有使用ajax加載的元素只要插件在頁面加載時運行就會自動獲取插入的文本。 – adeneo

+0

謝謝你解決了我的問題 – user3797053

+0

很高興,這有幫助! –

1

爲了獲得最佳性能,請在AJAX調用的成功處理程序中添加$('.class').reducetext(10);

這將是一個開銷設置另一個功能,併爲此運行它。


針對您的評論:

AJAX不是一個單獨的插件。它內置在Javascript和jQuery中。

電文讀出:

+0

ajax調用是在不同的插件,所以我必須在很多地方編輯,這將花費太多時間我的問題是我不應該觸及其他插件。所以我必須在一個普通的js文件中添加一個通用函數 – user3797053

+0

@ user3797053對不起,我認爲你對使用AJAX插件有一個錯誤的印象。請參閱上面我的回答中的鏈接。你不需要第三方插件來做AJAX。 –

+1

我使用了很多插件,如數據表,jquery.form,jput,jformslider等等,所有這些插件都有一個成功的Ajax函數。但我的項目已經到目前爲止,所以編輯所有這些插件成功功能對我來說是非常困難的,這就是爲什麼在一個普通的js文件中我想要有一個共同的功能來減少文本.Bhojendra Sah答案在我的情況是正確的。感謝您的支持 – user3797053