Помогите мне правильно реализовать addClassName в моем проекте JavaScript - PullRequest
0 голосов
/ 28 августа 2010

Мне часто нужны функции addClassName и removeClassName для Element s. Тем не менее, я не осмелюсь расширить родной Element из-за потенциальных столкновений. Итак, теперь мне интересно, что делать.

Я посмотрел на ExtJS, и он достигает этого как:

var element = document.getElementById('...');
var elem = new Ext.Element(element);
elem.addClass('something');

Мне нравится идея не расширять нативный Element здесь, но мне не очень нравится идея так сильно обернуть элемент в пользовательский объект, потому что теперь я не могу легко сделать несколько вещей, таких как setAttribute Например:

var element = document.getElementById('...');
var elem = new Ext.Element(element);
elem.addClass('something');
elem.setAttribute('src', '...'); // Fails

Однако я мог бы сделать:

var element = document.getElementById('...');
element.setAttribute('src', '...');
var elem = new Ext.Element(element);
elem.addClass('something');

но для меня это выглядит не очень хорошо. Вместо этого он выглядит немного сложным.

Существуют ли другие альтернативные способы, которыми я мог бы воспользоваться, кроме обертывания элемента вокруг моего собственного объекта, который предлагает мне эти классные методы?

1 Ответ

0 голосов
/ 28 августа 2010

Просто проверьте, есть ли уже определенная реализация. Я почти уверен, что addClassName не будет иметь другую подпись, чем у вас сейчас.

if (!node.prototype.addClassName) {
    node.prototype.addClassName = function addClassName(name) {
        // your code
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...