2015-01-05 53 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