- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Чтото то я не пойму, почему алертом выводиться "undefined" вместо "foo", и как получить значение атрибута через "this"?
this ссылается на того, кто его вызвал потому как
Так нужно.
Вы уперлись в основу ООП на JS. Почитайте здесь: http://javascript.ru/tutorial/object/thiskeyword
Когда вызываете функцию так как вы ее вызывали this = window. И при обращении к this.id интерпретатор пытается найти window.id или что то же самое глобальную переменную id.
<script type="text/javascript">
id='WOW!;// то же самое что и window.id = 'WOW!'
function foo() {
alert(this.id) // WOW!
}
</script>
Вообще эта тема - основа ООП в JS.
Меня смутило то что если я присваиваю click посредстовом скрипта
То все работает, а если задаю его посредством события через тэг html то нет, хотя казалось бы это одно и тоже.
В JS есть такое понятие как "контекст выполнения". Для обычной функции в том виде, в котором вы указали контекст = глобальный объект window. Любая глобальная переменная(функция) доступна как свойство window.
Но если вы создаете свой собственный объект, контекстом становятся свойства и методы объекта + много что еще при этом this указывает на собственные методы и свойства объекта.
В jQuery когда вы пишите
var v = $("#foo");
вы создаете v - некий объект(обертку вокруг #foo) , у которого куча собственных свойств и методов + сам элемент DOM c id=foo
Обработчики событий устроены так, что при записи
$("#foo").click(function(){...})
функция передаваемая в качестве параметра обрабатывается в контексте элемента DOM, соответствующего $("#foo"). Т.е. внутри этой функции ссылка на this обращается непосредственно к элементу DOM c id=foo Но это фича именно jQuery не js
Мутно но проще я не объясню. Я привел ссылку на Javascript.Ru там у Ильи Кантора подробно все расписано.
=
Офтопик.
Тут регулярно возникали холивары на тему jquery. Смысл которых в том, что jquery очень часто создает иллюзию того, что можно обойтись без знания JS как такового.