Как преобразовать функцию jquery прототипа в функцию прототипа javascript - PullRequest
0 голосов
/ 30 октября 2019

Я использую кроссворд в jquery и по какой-то причине мне нужно конвертировать его в javascript и избегать использования jquery. Мне удалось преобразовать многие его части, но у меня есть большая проблема с функцией-прототипом, и я не могу понять, как ее преобразовать.

Вот краткий код:

$("#"+cw_id).crossword();

(function($) {
// plugin definition
$.fn.crossword = function(options) {
    .....
    // implementation code goes here.    
    return this.each(function(){
      ....
    }
})();
// end plugin definition

Я попытался сделать это и аналогично этим вызовам, но ничего не работает нормально.

document.getElementById("#"+cw_id).crossword();
(function() {
// plugin definition
Object.prototype.crossword = function(options) {

})();
// end plugin definition

Фактический код этой функции-прототипа находится по этой ссылке: https://github.com/electricg/jQuery-Html5-Crossword/blob/master/crossword.js#L1

и вызывающийпо индексной ссылке: https://github.com/electricg/jQuery-Html5-Crossword/blob/master/index.html#L62

Мне действительно нужно знать, как преобразовать эту функцию-прототип обратно в javascript Заранее благодарю за любую помощь

1 Ответ

2 голосов
/ 30 октября 2019

Для функции, аналогичной jQuery, вы ищете HTMLElement.prototype.

HTMLElement.prototype.crossword = function(text) {
  this.innerHTML = text;
};

document.getElementById('crossword1').crossword('crossword here');
<div id=crossword1 />

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

const crossword = function(text) {
  this.innerHTML = text;
};

crossword.bind(document.getElementById('crossword1'))('crossword here');
<div id=crossword1 />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...