Prototype.js - $ (...). Next не является функцией - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь преобразовать свой код из jQuery в prototype.js.Я выполняю следующий код, но получаю $(...).next is not a function

var editorCounter = 0;
var newEditorIds = [];

$$(".input-text.mceEditor").each(function() {
    var next = $(this).next();
    var tagName = next.prop("tagName");

    if (typeof(tagName) == "undefined") {
        var newId = "newEditor_" + editorCounter;
        $(this).attr("id", newId);
        newEditorIds.push(newId);
        editorCounter++;
    }
});

newEditorIds.each(function(name, index) {
    tinymce.EditorManager.execCommand('mceAddEditor', true, name);
});

Он не полностью преобразован в prototype.js.Я все еще должен выяснить эквиваленты для prop() и attr().Пока я не понимаю, что я сделал не так, поскольку я сообщил себе на этом сайте , и он должен работать.


Оригинальный рабочий код jQuery:

var editorCounter = 0;
var newEditorIds = [];

jQuery(".input-text.mceEditor").each(function() {
    var next = jQuery(this).next();
    var tagName = next.prop("tagName");

    if (typeof(tagName) == "undefined") {
        var newId = "newEditor_" + editorCounter;
        jQuery(this).attr("id", newId);
        newEditorIds.push(newId);
        editorCounter++;
    }
});

jQuery.each(newEditorIds, function(i, v) {
    tinymce.EditorManager.execCommand('mceAddEditor', true, v);
});

1 Ответ

0 голосов
/ 20 ноября 2018

Array.prototype.each, который вы используете, не устанавливает this.Вы должны предоставить аргумент в функции обратного вызова для получения элемента.Таким образом:

$$(".input-text.mceEditor").each(function(element) {
    var next = element.next();

(Вы можете использовать $(element), но он ничего не делает, кроме случаев, когда вы не знаете, является ли element идентификатором или Element. Прототип использует monkey-исправление, а не упаковка, так что вы можете использовать только Element напрямую.)


Преобразованный код:

var editorCounter = 0;
var newEditorIds = [];

$$(".input-text.mceEditor").each(function(element) {
    var next = element.next();

    if (typeof(next) == "undefined") {
        var newId = "newEditor_" + editorCounter;
        element.id = newId;
        newEditorIds.push(newId);
        editorCounter++;
    }
});

newEditorIds.each(function(name, index) {
    tinymce.EditorManager.execCommand('mceAddEditor', true, name);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...