Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Массив элементов (https://javascript.ru/forum/events/54603-massiv-ehlementov.html)

danik.js 25.03.2015 05:47

Для этого функция $ должна вернуть объект, у которого есть метод hide и метод show. Открой исходники jQuery и посмотри как там сделано.

newuser1001 25.03.2015 11:26

Цитата:

Сообщение от cript
как в таком случае

В таком случае, надо сначала реализовать юзабельную версию ее. Например:
<html>
<head>
<style>
 div{
  background: blue
 }
</style>
</head>
<body>

<div>foo</div>
<div>foo</div>
<div>foo</div>
<div>foo</div>
<div>foo</div>
<div>foo</div>
<div id="foo">foo</div>

<script>

$=function(el){
  if(typeof(el)==="string") return $.create([].map.call(document.querySelectorAll(el), function(el){return el}))
  return $.create([el])
}
$.create=function(arr){var o=Object.create(this); o.arr=arr; return o}
$.hide=function(){this.arr.forEach(function(el){el.style.display="none"})}
$.show=function(){this.arr.forEach(function(el){el.style.display="block"})}

$("div").hide()
$(foo).show()

</script>

</body>
</html>

cript 26.03.2015 20:34

Цитата:

Сообщение от newuser1001 (Сообщение 362979)
В таком случае, надо сначала реализовать юзабельную версию ее. Например:
<html>
<head>
<style>
 div{
  background: blue
 }
</style>
</head>
<body>

<div>foo</div>
<div>foo</div>
<div>foo</div>
<div>foo</div>
<div>foo</div>
<div>foo</div>
<div id="foo">foo</div>

<script>

$=function(el){
  if(typeof(el)==="string") return $.create([].map.call(document.querySelectorAll(el), function(el){return el}))
  return $.create([el])
}
$.create=function(arr){var o=Object.create(this); o.arr=arr; return o}
$.hide=function(){this.arr.forEach(function(el){el.style.display="none"})}
$.show=function(){this.arr.forEach(function(el){el.style.display="block"})}

$("div").hide()
$(foo).show()

</script>

</body>
</html>

В таком случае нельзя сделать так $('div').className

newuser1001 26.03.2015 20:56

Цитата:

Сообщение от cript
В таком случае нельзя сделать так $('div').className

Долго думал?
<html>
<head>
<style>
 div{
  background: blue
 }
</style>
</head>
<body>
 
<div class="foo">foo</div>
<div class="foo">foo</div>
<div class="foo">foo</div>
<div class="foo">foo</div>
<div class="foo">foo</div>
 
<script>
 
$=function(el){
  if(typeof(el)==="string") return $.create([].map.call(document.querySelectorAll(el), function(el){return el}))
  return $.create([el])
}
$.create=function(arr){var o=Object.create(this); o.arr=arr; return o}
$.className=function(){return this.arr.map(function(el){return el.className})}
 
alert($("div").className())
</script>
</body>
</html>

теперь можно

cript 26.03.2015 21:18

Это не совсем то, придется очень много функций создавать, например, $('div').innerHTML

Может можно как то проверить вызывается ли функция или нет?


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