Функция-селектор наподобие jQuery
Я не очень хорошо разбираюсь в JavaScript и не могу пока разобраться в сложном для меня коде jQuery. Интересует такой вопрос, как сделать функцию-селектор по аналогии с jQuery и Prototype. Пример, хочу своим способом сделать show/hide элемента.
<div id="errorBar" onclick="selectElement(this).hide()"> Создаю функцию: function selectElement(element) { this.hide = function () { element.style.display = 'none'; } } Но консоль выдаёт ошибку: [23:09:05.005] TypeError: selectElement(this) is undefined Что я делаю не так и как сделать правильно? Пожалуйста, помогите. |
просто напиши:
<div onclick="this.style.display = 'none'">123</div> |
и то, что вы написали, так нельзя, вы сделали ф-ию конструтор:
function Parent() { this.hide = function () { alert('hide') } } var child = new Parent() child.hide() try { // но, Parent.hide() // не сработает } catch (e) { alert('не сработало') } |
<div id="errorBar" onclick="(new selectElement(this)).hide()">123</div> <script> function selectElement(element) { this.hide = function () { element.style.display = 'none'; } } </script> |
Не совсем то. Мне нужна функция-обёртка, которую можно использовать с любым DOM-объектом, не создавая при этом каких-то лишних экземпляров.
|
<div id="errorBar" onclick="selectElement(this).hide()">123</div> <script> function selectElement( elem ) { return new selectElement.prototype.init( elem ); } selectElement.prototype = { constructor: selectElement, length: 0, init: function( elem ) { this[0] = elem; this.length = 1; return this; }, hide: function() { var elem, i = this.length; for( ;elem = this[ --i ]; ) { elem.style.display = 'none'; } return this; } } selectElement.prototype.init.prototype = selectElement.prototype; </script> |
Цитата:
|
Цитата:
Цитата:
|
<div id='div'>lol</div> <script type='text/javascript'> Object.prototype.hide = function (){ var prot = this + ''; if (/\w?\ HTML\w?/img.test(prot) == true) this.style.display = 'none'; else if (console) console.log("Ошибка"); }; setTimeout(function(){document.getElementById('div').hide();}, 3000) </script> |
Цитата:
|
Часовой пояс GMT +3, время: 11:43. |