Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Непонятен код (https://javascript.ru/forum/misc/56470-neponyaten-kod.html)

ninja2 17.06.2015 15:21

Непонятен код
 
Здорова!
Есть код, который генерирует элементы и можно их перетаскивать, я сам код не пойму что там происходит и синтаксис не понятен.
Вот код:
$(
	  function() 
	  {  
        function c() 
		{
          var a = $("#menu a"),
              a = $.map(a, function(b) 
			  {
                var a = $("<input/>", 
				{
                  val: $(b).attr("href"),
                  on: 
				    {
						input: function() {
						  $(b).attr("href", this.value)
						}
				    }
                }),
                    d = $("<input/>", 
					{
                      val: $(b).text(),
                      on: {
                        input: function() {
                          $(b).text(this.value)
                        }
                      }
                    }),
                    c = $("<p/>", {
                      data: {
                        b: b
                      }
                    });
                c.append([a, d]);
                return c
              });
          $("#edit").append(a)
        }
		
		//вызов функции c
        c();
		
        $("#edit").sortable(
		{
          stop: function(a, b) {
            var c = $.map($("#edit p"), function(a) {
              return $(a).data("b")
            });
            $("#menu").append(c)
          }
        });
      });


Что здесь происходит, кто может объяснить?

ninja2 17.06.2015 15:23

Что за функция c() и почему там через запятую идут параметры?
var a = $("#menu a"),
07
	              a = $.map(a, function(b)

Он через запятую еще а= что то, что это за фигня? Это что там двойное присваивание происходит?

А от еще код и снова там идут через запятую параметры
var a = $("<input/>", 
				{
                  val: $(b).attr("href"),
                  on: 
				    {
						input: function() {
						  $(b).attr("href", this.value)
						}
				    }
                })

от здесь не ясно, что такое $(b). b это что тег? У меня в коде нету этого тега. или b это имя переменной в javaScript?
Код запутаный, я хз. не пойму как он работает.

рони 17.06.2015 15:30

ninja2,
может у автора кода спросить? :lol:

ninja2 17.06.2015 15:31

от эта строка что означает?
var a = $("#menu a")

Мы присваиваем в переменную а объект jquery в котором что находится элементы с блока <div> c айди menu и все ссылки?

tsigel 17.06.2015 15:31

ninja2,
берем "#menu a", и создаем столько же p в котором 2 инпута.
потом то что получилось кладем в "#edit"

потом $("#edit").sortable( - какой-то плагин. Лень искать что он делает и зачем.
Тому кто код писал - руки оторвать)

tsigel 17.06.2015 15:31

Цитата:

Сообщение от ninja2
от эта строка что означает?
var a = $("#menu a")

Мы присваиваем в переменную а объект jquery в котором что находится элементы с блока <div> c айди menu и все ссылки?

да

ninja2 17.06.2015 15:31

Цитата:

Сообщение от рони (Сообщение 375452)
ninja2,
может у автора кода спросить? :lol:

Нету автора, нужно самому разобратся и изменить код.

tsigel 17.06.2015 15:32

Цитата:

Сообщение от ninja2
Нету автора,

Этот код породила вселенная)

ninja2 17.06.2015 15:34

Цитата:

Сообщение от tsigel (Сообщение 375455)
ninja2,
берем "#menu a", и меняем его на p в котором 2 инпута.
потом то что получилось кладем в "#edit"

потом $("#edit").sortable( - какой-то плагин. Лень искать что он делает и зачем.
Тому кто код писал - руки оторвать)

плагин делает Drag Drop, там можно брать input поля и перемещать относительно друг друга.

рони 17.06.2015 15:35

ninja2,
вот как это начиналось http://javascript.ru/forum/jquery/56...tml#post375084

ninja2 17.06.2015 15:36

Цитата:

Сообщение от tsigel (Сообщение 375455)
ninja2,
Тому кто код писал - руки оторвать)

Кот то мб. и простой, я просто в javaScripte нулевой, аякс чуть чуть знаю и как вставить в блок данные и забрать оттуда и все.

KosBeg 17.06.2015 15:36

Цитата:

Сообщение от tsigel
потом $("#edit").sortable( - какой-то плагин. Лень искать что он делает и зачем.

вводишь в поисковике "jquery sortable" и вуаля - https://jqueryui.com/sortable/ =)

tsigel 17.06.2015 15:39

рони,
код не проходит проверку esLint)

Запутано очень конечно. Хотя вы же это пишите людям как примеры, а они вставляют в проекты без изменения)

tsigel 17.06.2015 15:40

KosBeg,
ну а мне лень гугл открыть)

KosBeg 17.06.2015 15:44

блииииин...
я хотел упростить его читаемость -
$(function() {  
  function c(){
    var a = $("#menu a"),
    
	a = $.map(a, function(b) {
      var a = $("<input/>", 
	
	{val: $(b).attr("href"),
      on: {
	    input: function() {
          $(b).attr("href", this.value)
        }
      }
    }),
    
	d = $("<input/>", 
    {val: $(b).text(),
      on: {
        input: function() {
          $(b).text(this.value)
        }
      }
    }),
    
	c = $("<p/>", {
      data: {
        b: b
      }
    });

      c.append([a, d]);
      return c;
    });
    $("#edit").append(a);
  }

//вызов функции c
c();
		
$("#edit").sortable({
  stop: function(a, b) {
    var c = $.map($("#edit p"), function(a) {
      return $(a).data("b")
    });
    
	$("#menu").append(c)
  }
});
});

Цитата:

Сообщение от ninja2
Код запутаный, я хз. не пойму как он работает.

ХЗ!

KosBeg 17.06.2015 15:46

Цитата:

Сообщение от tsigel
Хотя вы же это пишите людям как примеры, а они вставляют в проекты без изменения)

В этом-то и проблема, новички считают что если им дали код те кто более-менее розбирается - он сует этот код в рабочий проект!

KosBeg 17.06.2015 15:49

*!*var a*/!* = $("#menu a"),
*!*a*/!* = $.map(a, function(b) {
*!*var a*/!* = $("<input/>",

пойду выпью валерьянки :-?

рони 17.06.2015 15:52

код : нашли ссылки создали столькоже тегов p ;
в p положили два инпута для редактирования ссылки
на p навесили драг-дроп
перемещаются p, меняется и порядок ссылок. всё

ninja2 17.06.2015 16:13

А как можно посмотреть что в объекте находится, содержимое типо на экран вывести. От например код:
var a = $("#menu a")

и я хочу вывести на экран что там в объекте.

ninja2 17.06.2015 16:14

Цитата:

Сообщение от рони (Сообщение 375471)
перемещаются p, меняется и порядок ссылок. всё

А че порядок ссылок меняется? На инпут же драг дроп наложено?

ninja2 17.06.2015 16:30

Ладно щас буду тестить-разбирать. Не такой и простой этот JavaScript как показалось сразу :)

ninja2 17.06.2015 16:33

КАк посмотреть содержимое объекта в Jquery? Написал такой код
function ff()
	  {
		  var a = $("#menu a");
		  alert(a);
	  }
	  ff();

выводит типо это объект:


Делаю alert(a.text()); вообще ничего не выводит, но там же то что то есть.

рони 17.06.2015 16:35

ninja2,
console.log(a)

ninja2 17.06.2015 16:49

Цитата:

Сообщение от рони (Сообщение 375481)
console.log(a)

и где его прописывать? ниче не выводит. В консоли пробовал
пишет а не найдено. Создал а в глобальной области тоже пишет что не найдено.
function ff()
	  {
		  var a = $("#menu a");
		//  console.log(a);
	  }
	  ff();
	  var a = $("#menu a");


Так что никак нельзя посмотреть что у меня находится в объекте?

рони 17.06.2015 17:02

ninja2,
Google Chrome нажать F12 запустить код
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">

   <script src="http://code.jquery.com/jquery-1.10.2.js"></script>

  <script>
$(function() {
    function c() {
      console.log("#menu a", $("#menu a"))

    }
    c();
 });
  </script>
</head>
<body>
<div id="menu">
   <a href="#dfdf">1df</a>
   <a href="#fgg44">2fsdfsd</a>
   <a href="#Df324">3dsfdsf</a>
   <a href="#dfs33">4sdfsdf</a>
 </div>

</body>
</html>

ninja2 17.06.2015 17:15

Цитата:

Сообщение от рони (Сообщение 375490)
ninja2,
Google Chrome нажать F12 запустить код

Работает и в фаерфоксе, я еще так пробовал выводить:
function ff()
	  {
		var a = $("#menu a");
		alert(a.context);
		var s;
		for (var p in a)
			s+=p+" "+a[p]+"<hr>";
		document.write(s);
	//	alert(s);
	  }
	  ff();


А где в этом объекте сами ссылки хранятся, там выводится всякая фигня. Как мне получить доступ к ссылкам и вывести их в другой блок c id="blok". что сделать тупо $("#blok").append(a) ?
Вообще как доступ к элементам получит, толку что кучу функций вывело, ссылок я так и не нашел.
Как мне изменить ссылки, это через методы изменять?

рони 17.06.2015 17:19

ninja2,
a[0] первая ссылка
a[1] вторая ...

ninja2 17.06.2015 17:37

Цитата:

Сообщение от рони (Сообщение 375496)
a[0] первая ссылка
a[1] вторая ...



То сами ссылки выводит, а где теги?
содержимое которое было в блоке #menu я что его не могу посмотреть что там щас в объекте. или что то изменил в объекте и вывел на экран посмотрел что изменилось.

ninja2 17.06.2015 17:38

от код выше
a = $.map(a, function(b) 
			  {
                var a = $("<input/>", 
				{
                  val: $(b).attr("href"),
                  on: 
				    {
						input: function() {
						  $(b).attr("href", this.value)
						}
				    }
                }),

Что такое function(b) это что за b это пустой объект, его нигде в коде нету.

ninja2 17.06.2015 17:39

ладно почитаю за jquery функции что там есть.

ninja2 17.06.2015 21:49

от не пойму этот от код:
var a = $("<input/>", 
				{
                  val: $(b).attr("href"),
                  on: 
				    {
						input: function() {
						  $(b).attr("href", this.value)
						}
				    }
                })

Создается объект Jquery тег <input>, ок, val - это атребут value, а что такое on? и почему там скобки идут? И что такое внутри input: ????

рони 17.06.2015 22:00

ninja2,
on - список событий, которые хочется обработать,
input - событие вставки изменения содержимого - событие-input


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