Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.07.2012, 23:18
Интересующийся
Отправить личное сообщение для shoo Посмотреть профиль Найти все сообщения от shoo
 
Регистрация: 01.06.2012
Сообщений: 14

Функция-селектор наподобие 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

Что я делаю не так и как сделать правильно? Пожалуйста, помогите.
Ответить с цитированием
  #2 (permalink)  
Старый 24.07.2012, 02:00
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

просто напиши:
<div onclick="this.style.display = 'none'">123</div>
__________________
оляля, ололо
Ответить с цитированием
  #3 (permalink)  
Старый 24.07.2012, 02:04
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

и то, что вы написали, так нельзя, вы сделали ф-ию конструтор:
function Parent() {
this.hide = function () { 
alert('hide')
 }
}
var child = new Parent()
child.hide() 
try {  
// но, 
Parent.hide() 
// не сработает
} catch (e) { 
alert('не сработало')
}
__________________
оляля, ололо

Последний раз редактировалось 9xakep, 24.07.2012 в 02:08.
Ответить с цитированием
  #4 (permalink)  
Старый 24.07.2012, 04:26
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

<div id="errorBar" onclick="(new selectElement(this)).hide()">123</div>
<script>
function selectElement(element) {
    this.hide = function () {
        element.style.display = 'none';
    }
}
</script>
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #5 (permalink)  
Старый 24.07.2012, 10:14
Интересующийся
Отправить личное сообщение для shoo Посмотреть профиль Найти все сообщения от shoo
 
Регистрация: 01.06.2012
Сообщений: 14

Не совсем то. Мне нужна функция-обёртка, которую можно использовать с любым DOM-объектом, не создавая при этом каких-то лишних экземпляров.
Ответить с цитированием
  #6 (permalink)  
Старый 24.07.2012, 10:28
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

<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>
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #7 (permalink)  
Старый 24.07.2012, 10:32
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от shoo
Мне нужна
нужна? Напиши! Ты вообще представляешь, что такое качественный кросс-барузерный селектор? Думаю, нет. А devote такой написал. Если он будет в хорошем настроении, может дать ссылку )
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 24.07.2012 в 10:34.
Ответить с цитированием
  #8 (permalink)  
Старый 24.07.2012, 11:09
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от shoo
не создавая при этом каких-то лишних экземпляров.
для этих целей вам 9xakep, привел пример в первом своем посте. Там никаких экземпляров не создается. В других случаях они все равно будут создаваться.

Сообщение от nerv_
может дать ссылку )
а что ее давать то? она и так есть в каждом моем посте в подписи.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #9 (permalink)  
Старый 24.07.2012, 12:34
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

<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>
Ответить с цитированием
  #10 (permalink)  
Старый 24.07.2012, 12:37
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Dim@
Object.prototype.hide = function (){
очень плохое решение, не рекомендуется совать в стандартные прототипы объектов всякий мусор..
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JQuery Form иногда не срабатывает функция обратного вызова success fedyak jQuery 2 23.01.2013 11:03
Функция в jQuery и this Valdemor jQuery 7 16.06.2012 20:36
jQuery - объект или функция? jazzz13 jQuery 8 16.08.2011 04:01
jQuery live функция immeasurability jQuery 1 16.05.2011 11:15
jQuery, функция animate(), рекурсия xintrea jQuery 12 03.01.2011 12:33