Как получить идентификатор из класса в веб-сервис, используя Jquery - PullRequest
1 голос
/ 07 февраля 2011

У меня есть несколько текстовых полей «изменить на месте», которые находятся внутри сгенерированной таблицы, и мне нужно передать идентификатор со страницы в веб-сервис, таким образом ...

$(document).ready(function () {

 $(".extraText").editInPlace({
            url: "http://" + document.location.host + "/MenuEdit/EditExtra/",
            params: "Id=" + function() {return $(this).attr("rel")},
etc

Поскольку у меня есть несколько одинаковых ящиков, мне нужно вызывать по классам, а не по элементам, но мне нужно получить атрибут Id "rel" из отдельного элемента и передать его через веб-сервис. На последнем месте анонима function (function() { return $(this).attr("rel")},) я продолжаю отклеиваться. Я попробовал много вариантов этого, и если я добавлю предупреждение о некоторых вариантах, и это даст мне правильный результат, но я не верну его. Пожалуйста помоги.

Ответы [ 2 ]

3 голосов
/ 07 февраля 2011

Полагаю, вам нужно перебирать каждый элемент, если editInPlace не предоставляет никакой возможности получить значение во время выполнения:

(function() {
    var url = "http://" + document.location.host + "/MenuEdit/EditExtra/";
    $(".extraText").each(function() {       
         $(this).editInPlace({
            url: url,
            params: "Id=" + $(this).attr("rel"),
        etc 
        });
    });
}());

(непосредственная функция - просто не загрязнять глобальное пространство именс переменной url и избегая повторяющейся конкатенации строк)

Не уверен, чего вы хотите достичь с помощью анонимной функции ... в ее нынешнем виде он просто пытается объединить функцию со строкой.

2 голосов
/ 07 февраля 2011

Ваша функция никогда не вызывается. Когда вы пишете что-то вроде:

"Abc " + function() { return 'def'; };

Javascript объединит «Abc» с оценкой function() { return 'def'; }, которая является объектом Function! Это эквивалентно:

var foo = function() { return 'def'; };
"Abc " + foo;

Javascript преобразует foo в строку, и результат будет:

"Abc [Object]"

потому что строковое представление объекта Function - '[Object]' (или, может быть, "Abc function() { return 'def'; }", это зависит от вашей реализации JS).

Это немного отличается от:

"Abc " + foo();

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

"Abc def"

Следуйте рекомендациям Феликса Клинга, чтобы найти решение вашей проблемы.

...