Функция-селектор наподобие 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, время: 02:59. |