Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Вызов функции из функции с параметрами (https://javascript.ru/forum/events/52923-vyzov-funkcii-iz-funkcii-s-parametrami.html)

cript 13.01.2015 11:25

Вызов функции из функции с параметрами
 
Приветствую!
Имеется такая конструкция
<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();

krasovsky 13.01.2015 14:41

http://api.jquery.com/add/ - почитай сначала как использовать и для чего

SV0L0CH 13.01.2015 15:12

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

cript 13.01.2015 16:36

SV0L0CH,
большое спасибо, это то что нужно

cript 15.01.2015 23:55

Подскажите, как можно сделать так, чтобы при вызове, например, $('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(){
...
},
...
}

SV0L0CH 16.01.2015 17:33

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

PS начни давать более очевидные названия переменным хотябы в коде который оставляешь на форуме.

registrant 16.01.2015 17:59

Цитата:

Сообщение от 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>

cript 16.01.2015 19:11

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

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

registrant 16.01.2015 20:00

cript,
Невозможно это сделать. HTML-элементы только "прикидываются" нативными объектами, они не дают себя расширять полноценно, это часть браузерного API, а не часть языка. Какая тебе разница, что возвращается? Тебе нужен некоторый интерфейс, какая разница, как он реализован? Учись построению абстракций.

registrant 16.01.2015 20:10

можешь делать вот так
<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>

Если уж приспичило.


Часовой пояс GMT +3, время: 04:11.