Jquery替换为Javascript函数的返回值

时间:2009-12-27 18:16:05

标签: javascript jquery function replace

好的,我刚刚开始使用jQuery。

我有一个包含日期值表的页面。每个都包裹在我能找到的标签中  $( 'mytag')。 <mytag>2009-10-31</mytag>

如何使用Jquery,我

  1. 获取每个源值和
  2. 将其传递给Javascript函数
  3. 然后用函数计算的结果替换表中的源值。
  4. 因此<mytag>2009-10-31</mytag>将替换为<mytag>Very Late</mytag>

    我写了Javascript函数。我的问题是传递单个值的jQuery语法。

4 个答案:

答案 0 :(得分:6)

首先,您需要一个元素选择器,例如

$('table')

将选择所有&lt; table&gt;你的HTML中的元素。所以,

$('mytag')

会给你你的元素。您将获得返回的jQuery对象(不是DOM对象)。见http://docs.jquery.com/Selectors

然后你想为每个元素调用一个函数。为此我们调用.each函数,并传递函数来调用每个元素:

$('mytag').each(function(){
    //function code goes here
});

(见http://docs.jquery.com/Utilities/jQuery.each

本案例中的函数称为匿名函数

然后你想引用迭代中的当前对象,所以我们使用DOM this项并将其包装到jquery对象中。要获取该值,我们使用.text()函数(http://docs.jquery.com/Attributes/text

$('mytag').each(function(){
    $(this).text()
});

注意:如果它是一个输入元素,那么你可以使用.val()

将它传递给函数很简单:

    ...
    MyFunction($(this).text());
    ...

text()函数有一个重载实现,允许您在传递值时设置文本:

    $(this).text(someval);

因此,我们可以将其纳入我们的代码

    ...
    $(this).text(MyFunction($(this).text()));
    ...

制作我们的最终代码块:

$('mytag').each(function(){
    $(this).text(MyFunction($(this).text()));
});

答案 1 :(得分:0)

$('mytag').each(function (index,tag) {
    $(tag).text( myFunc($(tag).text()) );
});

答案 2 :(得分:0)

$("mytag").each(function() {
   $(this).html("Very Late");

});

答案 3 :(得分:0)

$('mytag').each(function() {
  $(this).text(someFunction($(this).text()));
});

但是,从您的问题的声音来看,jQuery-timeago plugin可能会更好地为您服务。对于您的特定情况,您可能希望将来允许日期:

jQuery.timeago.settings.allowFuture = true;

...而且你想要创建自己的语言覆盖。请参阅language override examples。您可以定义几个“迟到”和“非常晚”的值。您还可以将函数传递给每个函数,以根据时间戳的天数更改值。