Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.10.2016, 14:35
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 765

Вид скрипта.
Всем привет.Написал скриптик, добавляет ссылку на страницу, но как то "не нравится" он мне. Можно ли как то по другому это дело изобразить? Вроде много "лишнего"
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)};
  })
Ответить с цитированием
  #2 (permalink)  
Старый 08.10.2016, 14:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от ureech
как то "не нравится" он мне
Ну во-первых - зачем такой винегрет из document.getElementById и JQ? Почему не

var ul = $('#tabs'),
  li = ul.find('li'),
  span = li.find('span');
Ответить с цитированием
  #3 (permalink)  
Старый 08.10.2016, 15:25
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 765

Сообщение от laimas
var ul = $('#tabs'),
li = ul.find('li'),
span = li.find('span');
Вот это я и имел ввиду. Просто ещё не очень знаю разницу чистого Javascript и JQ.
Ответить с цитированием
  #4 (permalink)  
Старый 08.10.2016, 15:28
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

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

См. innerhtml.ru
Ответить с цитированием
  #5 (permalink)  
Старый 08.10.2016, 15:50
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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

Что касается дальнейшего, то совсем не понятно - речь идет о вставке ссылки, которая на момент выполнения скрипта на клиенте будет иметь одно значение, а вставляется она несколько раз в цикле. Зачем?
Ответить с цитированием
  #6 (permalink)  
Старый 08.10.2016, 20:02
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от laimas Посмотреть сообщение
получать так - this.value. А $(this).val() лишняя
Это не совсем тоже самое посмотри
Ответить с цитированием
  #7 (permalink)  
Старый 08.10.2016, 21:33
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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


Чем значения в данном случае будут различны?
Ответить с цитированием
  #8 (permalink)  
Старый 08.10.2016, 21:51
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

laimas, посмотри valHooks по ссылке там описаны различия, select там есть
Ответить с цитированием
  #9 (permalink)  
Старый 08.10.2016, 22:02
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Rise
посмотри valHooks по ссылке там описаны различия
Зачем? Я показываю конкретный пример, я их беру из того что тут пишут - получить значение из списка, поля ввода, отправить асинхронным запросом. В чем будет разница для сервера при this.value и $(this).val()?
Ответить с цитированием
  #10 (permalink)  
Старый 08.10.2016, 22:09
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помощь в редактировании скрипта Diox Общие вопросы Javascript 0 27.11.2015 16:41
jQuery: странные вещи при добавлении скрипта wwwboy jQuery 2 18.12.2011 23:32
Как обнулить переменные после завершения скрипта QRS jQuery 3 07.07.2010 03:08
Круговорт скрипта.... Karl Общие вопросы Javascript 1 17.10.2009 15:37
Блок переключения меню на JS, два скрипта в одном файле Dizeloid Элементы интерфейса 0 30.07.2009 12:03