2009-12-27 4 views
4

OK Я только начинаю с jQuery.JQuery Замените возвращаемое значение функции Javascript

У меня есть страница с таблицей значений даты. Каждый из них завернут в тег, который я могу найти с помощью $ ('mytag'). <mytag>2009-10-31</mytag>

Как, используя Jquery, я бы

  1. принимать каждый из исходных значений и
  2. передать его в функцию Javascript
  3. затем заменить это значение источника в таблице с результатом вычисление функции.

Так <mytag>2009-10-31</mytag> будет заменен <mytag>Very Late</mytag>

У меня есть функция Javascript написана. Мой вопрос заключается в синтаксисе jQuery для передачи отдельного значения.

+1

Хорошо продуманный вопрос, добро пожаловать в сообщество. – gnarf

ответ

6

Во-первых, вам понадобится селектор элемента, например,

$('table') 

будет выбрать все < таблицы > элементов в HTML. Таким образом,

$('mytag') 

предоставит вам свои элементы. Вы получите объект jQuery (а не объект DOM). См. http://docs.jquery.com/Selectors

Затем вы хотите вызвать функцию для каждого из ваших элементов. Для этого мы вызываем функцию .each, и передать функции для вызова для каждого элемента:

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

(см http://docs.jquery.com/Utilities/jQuery.each)

Функция в этом случае называется функция Anonymous

Затем вы хотите ссылаться на текущий объект на итерации, поэтому мы используем элемент DOM this и переносим его в объект jquery. Для того, чтобы получить значение, мы используем функцию .text() (http://docs.jquery.com/Attributes/text)

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

Примечание: если бы это был элемент ввода, то вы бы использовали.Вал()

Передача его функции легко:

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

Функция текст() имеет перегруженный реализацию, которая позволяет задать текст, если передать значение:

$(this).text(someval); 

Таким образом, мы можем учитывать это в наш код

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

Making наш окончательный блок кода:

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

Спасибо, это работало как шарм, и ваше объяснение было тщательным и ясным. –

0
$('mytag').each(function (index,tag) { 
    $(tag).text(myFunc($(tag).text())); 
}); 
0
$("mytag").each(function() { 
    $(this).html("Very Late"); 

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

Но от звука вашей проблемы, вы могли бы быть лучше обслуживаться jQuery-timeago plugin. Для вашего конкретного случая, вы, возможно, хотите, чтобы даты в будущем:

jQuery.timeago.settings.allowFuture = true; 

... и вы хотите создать свой собственный язык переопределение. См. language override examples. Вы можете определить несколько «поздних» и «очень поздних» значений. Вы также можете передать функцию каждому из них, чтобы изменить значение в зависимости от того, сколько дней назад была отметка времени.

Смежные вопросы