Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.01.2015, 11:25
Профессор
Отправить личное сообщение для cript Посмотреть профиль Найти все сообщения от cript
 
Регистрация: 03.02.2014
Сообщений: 238

Вызов функции из функции с параметрами
Приветствую!
Имеется такая конструкция
<div id="vvv" title="555">123</div>
<script>
var $ = (function() {
return {
add: function(e){
alert(e.title);
}
}
}())
$.add(document.getElementById('vvv'));
</script>

.. все работает. Подскажите как сделать так, чтобы сработал такой вызов
$(document.getElementById('vvv')).add();
Ответить с цитированием
  #2 (permalink)  
Старый 13.01.2015, 14:41
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

http://api.jquery.com/add/ - почитай сначала как использовать и для чего
Ответить с цитированием
  #3 (permalink)  
Старый 13.01.2015, 15:12
Профессор
Отправить личное сообщение для SV0L0CH Посмотреть профиль Найти все сообщения от SV0L0CH
 
Регистрация: 07.11.2010
Сообщений: 301

Так что ли?
<div id="vvv" title="555">123</div>
<script>
var $ = function(e) {
  return {
    add: function(){
      alert(e.title);
    }
  }
};
$(document.getElementById('vvv')).add();
</script>

Последний раз редактировалось SV0L0CH, 13.01.2015 в 15:17.
Ответить с цитированием
  #4 (permalink)  
Старый 13.01.2015, 16:36
Профессор
Отправить личное сообщение для cript Посмотреть профиль Найти все сообщения от cript
 
Регистрация: 03.02.2014
Сообщений: 238

SV0L0CH,
большое спасибо, это то что нужно
Ответить с цитированием
  #5 (permalink)  
Старый 15.01.2015, 23:55
Профессор
Отправить личное сообщение для cript Посмотреть профиль Найти все сообщения от cript
 
Регистрация: 03.02.2014
Сообщений: 238

Подскажите, как можно сделать так, чтобы при вызове, например, $('abc') - возвращался элемент, но при этом $('abc').add() выполнялось как и должно, в моем варианте при вызове $('abc') вернет объект со всеми перечисленными функциями..
var $ = function(e) {
var _e = d.getElementById(e);
if(_e == null)
{
return console.log(e+' not found');
}
else
{
return _e;
}
return {
add: function(f){
//alert(f);
},
func1: function(){
...
},
...
}

Последний раз редактировалось cript, 15.01.2015 в 23:58.
Ответить с цитированием
  #6 (permalink)  
Старый 16.01.2015, 17:33
Профессор
Отправить личное сообщение для SV0L0CH Посмотреть профиль Найти все сообщения от SV0L0CH
 
Регистрация: 07.11.2010
Сообщений: 301

Берёшь элемент и добавляешь в него все необходимые функции, потом возвращаешь.
Если таких элементов много, то есть смысл воспользоваться паттерном "наследование", однако заниматься этим в ближайшее время не рекомендую.

PS начни давать более очевидные названия переменным хотябы в коде который оставляешь на форуме.
Ответить с цитированием
  #7 (permalink)  
Старый 16.01.2015, 17:59
Аспирант
Посмотреть профиль Найти все сообщения от registrant
 
Регистрация: 15.01.2015
Сообщений: 39

Сообщение от cript
Подскажите, как можно сделать так, чтобы при вызове, например, $('abc') - возвращался элемент, но при этом $('abc').add() выполнялось как и должно, в моем варианте при вызове $('abc') вернет объект со всеми перечисленными функциями..
<html>
<head>
</head>
<body>

<div id="vvv" title="555">123</div>


<script>

main={
  get: function(){alert(this.self.title)}
}

$=function(id) {
  var o=Object.create(main) 
  o.self=document.getElementById(id)
  return o
}

$('vvv').get();

</script>

</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 16.01.2015, 19:11
Профессор
Отправить личное сообщение для cript Посмотреть профиль Найти все сообщения от cript
 
Регистрация: 03.02.2014
Сообщений: 238

registrant,
$('vvv') вернет Object {self: div#vvv, get: function}
нужно чтобы при вызове $('vvv') возвращался элемент, а при вызове $('vvv').get() alert

Может кто нибудь знает как совершить проверку на вызов вложенной функции?

Последний раз редактировалось cript, 16.01.2015 в 19:16.
Ответить с цитированием
  #9 (permalink)  
Старый 16.01.2015, 20:00
Аспирант
Посмотреть профиль Найти все сообщения от registrant
 
Регистрация: 15.01.2015
Сообщений: 39

cript,
Невозможно это сделать. HTML-элементы только "прикидываются" нативными объектами, они не дают себя расширять полноценно, это часть браузерного API, а не часть языка. Какая тебе разница, что возвращается? Тебе нужен некоторый интерфейс, какая разница, как он реализован? Учись построению абстракций.
Ответить с цитированием
  #10 (permalink)  
Старый 16.01.2015, 20:10
Аспирант
Посмотреть профиль Найти все сообщения от registrant
 
Регистрация: 15.01.2015
Сообщений: 39

можешь делать вот так
<html>
<head>
</head>
<body>

<div id="vvv" title="555">123</div>


<script>

get=function(){alert(this.title)}
$=function(id) {
   return document.getElementById(id)
}

get.call($('vvv'))


</script>

</body>
</html>

Если уж приспичило.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Повторный вызов функции TorchTT Общие вопросы Javascript 4 20.03.2014 21:20
Вызов функции из скрытого iframe Beer75 Общие вопросы Javascript 2 05.06.2013 21:36
Двойной вызов функции Tmin10 jQuery 8 08.12.2011 15:19
Вызов функции TicTac Общие вопросы Javascript 2 24.01.2011 23:35
непонятный вызов функции hedgi Общие вопросы Javascript 2 05.08.2010 11:55