Пользовательская функция jQuery с несколькими селекторами - PullRequest
3 голосов
/ 29 июля 2011

Я пытаюсь создать пользовательскую функцию jquery, которая имеет два параметра, один из которых представляет собой одну строку, определяющую метод обновления второго параметра; объект селекторов.

Вот пример использования функции:

$.select_content("update", {
    "object_1",
    "object_2"
});

И функция:

(function ( $ ) {
    var methods             = {
        "update"            : function ( objects ) {
            $.each(objects, function (object){
                // Do stuff...
            });
        },
        "reset"             : function ( objects ) {
            $.each(objects, function (object){
                // Do stuff...
            });
        }
    };
    $.fn.select_content     = function ( method ) {

    };
})( jQuery );

Однако в консоли я получаю ошибку возврата, которая выдает неожиданный токен , в этой строке: "object_1",",.

Есть ли лучший способ приблизиться к этому? Спасибо.

Ответы [ 2 ]

3 голосов
/ 29 июля 2011

Поскольку синтаксис json требует пары ключ-значение.Вы можете попробовать массив:

$.select_content("update", [
    "object_1",
    "object_2"
]);

Но вы также можете использовать синтаксис селектора:

$.select_content("update", "object_1, object_2");

Тогда:

$(objects).each(function (object){
    // Do stuff...
});
2 голосов
/ 29 июля 2011

Хотя я не совсем понимаю, что вы пытаетесь сделать, ваша синтаксическая ошибка происходит из этого примера кода:

$.select_content("update", {
    "object_1",
    "object_2"
});

Во втором параметре вы используете буквенное обозначение объекта ({}, что некоторые могут ошибочно назвать JSON) без именования пар ключ / значение.Эта конкретная синтаксическая ошибка исчезнет, ​​если вместо этого использовать литеральную запись массива:

$.select_content("update", [
    "object_1",
    "object_2"
]);

или если вы добавите имена ключей:

$.select_content("update", {
    one: "object_1",
    two: "object_2"
});

В зависимости от того, какие изменения вы выберете, вы исправите синтаксисошибка, о которой вы беспокоитесь, как я уже сказал, но, возможно, не заставит вещь работать.Есть другие проблемы в том, что вы нам показываете.Вот некоторые из них:

  1. Вы показываете, что ваша функция определена на прототипе jQuery ($.fn), что делает ее объектом экземпляра.Однако вы вызываете его так, как если бы он был «статическим» через $.yourFunc()
  2. Вы определяете свой метод на прототипе jQuery, но не возвращаете коллекцию, для которой он был запущен, - что убивает цепочку.

Основываясь на этих двух пунктах, я подозреваю, что вы намеревались определить свой метод в $ вместо $.fn.Но я не могу быть уверен в твоих намерениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...