Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Вид скрипта. (https://javascript.ru/forum/dom-window/65261-vid-skripta.html)

ureech 08.10.2016 14:35

Вид скрипта.
 
Всем привет.Написал скриптик, добавляет ссылку на страницу, но как то "не нравится" он мне. Можно ли как то по другому это дело изобразить? Вроде много "лишнего" :)
var myprofile = '{$myprofile}';
 var sql_list = '{$sql_list}';
  var user = '{$user}';
  var text ='Ссылка на компонент Dieta в профиле';
  var link = '<td><img style="width:24px" src="/templates/{template}/images/dieta/no_diet.png" border="0"/></td><td><a href="/dieta/'+user+'/eat">Мой план</a></td>';
  $(function(){
  var newTr = document.createElement('tr');
  var table = $("body").find("table")[3];
  var ul = document.getElementById('tabs');
  var li = $(ul).find('li');
  var span = $(ul).find('li span');

  for(i=0;i<7;i++){
 if($(span[i]).text() == text){$(li[i]).hide()};
  }
  newTr.innerHTML = link;
 if(myprofile && sql_list){ table.insertBefore(newTr, table.firstChild)};
  })

laimas 08.10.2016 14:43

Цитата:

Сообщение от ureech
как то "не нравится" он мне

Ну во-первых - зачем такой винегрет из document.getElementById и JQ? Почему не

var ul = $('#tabs'),
  li = ul.find('li'),
  span = li.find('span');

ureech 08.10.2016 15:25

Цитата:

Сообщение от laimas
var ul = $('#tabs'),
li = ul.find('li'),
span = li.find('span');

Вот это я и имел ввиду. Просто ещё не очень знаю разницу чистого Javascript и JQ.:)

Яростный Меч 08.10.2016 15:28

Не знаю как теперь, но раньше в IE нельзя было менять innrHTML для tr

См. innerhtml.ru

laimas 08.10.2016 15:50

Цитата:

Сообщение от ureech
Вот это я и имел ввиду

Это только во-первых. Что касаемо знаний, так кто же вам мешает изучать методы jQuery. Получается, что о document.getElementById вы знаете, а о $("#id_selector") нет? Ведь var ul = document.getElementById('tabs'); ради того чтобы потом получить это как JQ объект $(ul), это кощунство. :) Равноценно еще пишут и так - в неком обработчике установленном JQ делают следующие $(this).val(), и все, то есть ради получения значения. Но ведь значение поля проще в данном случае получать так - this.value. А $(this).val() лишняя совсем не нужная нагрузка, и пусть она мизерная, но если поступать так по любому поводу, то это уже плохо.

Что касается дальнейшего, то совсем не понятно - речь идет о вставке ссылки, которая на момент выполнения скрипта на клиенте будет иметь одно значение, а вставляется она несколько раз в цикле. Зачем?

Rise 08.10.2016 20:02

Цитата:

Сообщение от laimas (Сообщение 431017)
получать так - this.value. А $(this).val() лишняя

Это не совсем тоже самое посмотри

laimas 08.10.2016 21:33

Цитата:

Сообщение от Rise
Это не совсем тоже самое

Я не о тождественности действий, а также возможности воздействовать valHooks, а вот о таком:

$('div').on('change input', 'select, input', function() {
        console.log(this.value, $(this).val())
})


<div>
<select>
    <option value="1">aaa</option>
    <option value="2">bbb</option>
</select>
<input />
</div>


Чем значения в данном случае будут различны?

Rise 08.10.2016 21:51

laimas, посмотри valHooks по ссылке там описаны различия, select там есть

laimas 08.10.2016 22:02

Цитата:

Сообщение от Rise
посмотри valHooks по ссылке там описаны различия

Зачем? :) Я показываю конкретный пример, я их беру из того что тут пишут - получить значение из списка, поля ввода, отправить асинхронным запросом. В чем будет разница для сервера при this.value и $(this).val()?

Rise 08.10.2016 22:09

laimas, тут много что пишут, ты же не конкретный пример имел ввиду изначально


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