Рекурсия с функцией прототипа

0

Я хотел бы создать новую функцию jQuery, в которой я мог бы передать одно или несколько значений в опции. Затем, для всех согласованных элементов DOM, итерации по всем различным параметрам, но по одному варианту за раз. Таким образом, для всех элементов, которые не обрабатываются, воспроизводите функцию прототипа. Все лечение должно быть в одной и той же функции, поэтому я подумал о рекурсии, но, поскольку я не очень разбираюсь в прототипировании в javascript, я не уверен, как это сделать. Пока нет ошибок, но ничего не происходит.

Это верно?

Спасибо за ваше просвещение.

(function($) {
    $.fn.foo = function (prop) {
        var options = $.extend({
            "elt" : "",   // Declaration of my options
            "callback" : function(){}
        }, prop)

        var optionsTab = options.elt.split('#');
        var current = optionsTab.slice(0,1),
        var remaining = optionsTab.slice(1);
        var result = this.each(function() {
            var el = $(this);
            // Code handling the first element in the option
        });

        if (remaining.length > 0) {
            $({ "elt": remaining.join("#") }); // Trial of recursion of foo
            return result;
        }
    }
  • 0
    " $({ "elt": remaining.join("#") }); // Trial of recursion of foo " Я не вижу там никакого вызова foo .
  • 0
    Если я попытаюсь "foo ({" elt ": оставаясь. Join (" # ")});" => ошибка при запуске javascript, foo undefined: - /
Показать ещё 8 комментариев
Теги:
recursion
prototype

2 ответа

0
Лучший ответ

Я думаю, вы пытаетесь вызвать рекурсивно в тайм-аут, если я исправлю?

    var result = this.each(function() {
        var el = $(this);
        // Code handling the first element in the option
    });

    if (remaining.length > 0) {
        $({ "elt": remaining.join("#") }); // Trial of recursion of foo
       var me = this;
       setTimeout(function(){
         me.foo(parameters);//not sure what the parameters should be
       },500);
    }
    return this;

Некоторая полезная информация: qaru.site/questions/2287/... (в разделе "Эта переменная")

0

Создал эту скрипку, и она работает:

$.fn.foo = function (prop) {
    var options = $.extend({
        "elt" : "",   // Declaration of my options
        "callback" : function(){}
    }, prop);

    var optionsTab = options.elt.split('#');
    var current = optionsTab.slice(0,1);
    var remaining = optionsTab.slice(1);
    this.each(function() {
        var el = $(this);
        // Code handling the first element in the option
    });

    if (remaining.length > 0) {
        this.foo({ "elt": remaining.join("#") }); // Trial of recursion of foo
    }
    return this;
};
  • 0
    Всем спасибо !

Ещё вопросы

Сообщество Overcoder
Наверх
Меню