powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Можно ли упростить JS код ?
19 сообщений из 44, страница 2 из 2
Можно ли упростить JS код ?
    #37965968
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andMegaMПочему след. код считается говнокодом?JQuery API As of jQuery 1.7 , the .live() method is deprecated. Use .on() to attach event handlers. Users of older versions of jQuery should use .delegate() in preference to .live().
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37966080
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё плохо мешать в названиях классов английский и транслит. И надо задуматься о нормальном семантическом HTML.
Пример:
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37966103
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
<!DOCTYPE HTML>
<html>  
  <head>    
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
    <style>
      .product-list, .product-list .cell {
        border: solid 1px #000;
        border-collapse: collapse;
      }
      
      .product-list .caption {
        background-color: #1b73a5;
        color: #fff;
      }
      
      .product-list .cell {
        padding: 8px;
      }
      
      .product-list .quantity {
        font-weight: bold;
      }
    </style>
  </head>  
  <body>
    <table class="product-list">
      <thead class="caption">
        <tr>
          <td>Кол-во</td>
          <td>Наименование товара</td>
          <td>Завод изготовитель</td>
          <td></td>
        </tr>
      </thead>
      <tbody class="content">
        <tr class="product" id="product-12345">
          <td class="cell quantity">5 шт.</td>
          <td class="cell name">Сени новые кленовые</td>
          <td class="cell manufacturer">ООО "Сени"</td>
          <td class="cell">
            <a href="#" class="update-product">Изменить</a>
          </td>
        </tr>
      </tbody>
    </table>
    <script>
      $('.product-list').on('click', '.update-product', onUpdateProductClick);
      
      function onUpdateProductClick() {
        var product = $(this).closest('.product'),
            productManufacturer = product.find('.manufacturer').text(),
            productName = product.find('.name').text();
        
        alert(productName + '\n' + productManufacturer);
      }
    </script>
  </body>
</html>
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37966157
buyboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так? =
Код: javascript
1.
2.
3.
4.
5.
6.
7.
      jQuery(".update-product").each(function(){
        jQuery(this).click(function(){
          var productManufacturer = jQuery(this).parent().prev().text();
          var productName = jQuery(this).parent().prev().prev().text();
          alert(productName + '\n' + productManufacturer);
        });
      });
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37966209
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buyboy, плохо...Делегирование событийЕсли у вас есть много элементов, события на которых нужно обрабатывать похожим образом, то не стоит присваивать отдельный обработчик каждому.А Вы как раз таки присваиваете отдельный обработчик каждому элементу класса update-product

Цитата взята отсюда
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37966214
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ запись var productName = jQuery(this).parent().prev().prev().text() не читается ни фига и перестанет работать, если в таблицу добавить колонку(и) :)
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37966253
buyboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
по идее обход each можно убрать
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37966261
buyboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,
и вешать клик на класс тега
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37966269
buyboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA перестанет работать, если в таблицу добавить колонку(и) :) это да
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37966295
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buyboyпо идее обход each можно убратьЕсли убрать each, то мы получим укороченную запись on, т.к. JQuery клик это:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function( data, fn ) {
    if ( fn == null ) {
        fn = data;
        data = null;
    }
    
    return arguments.length > 0 ?
        this.on( 'click', null, data, fn ) : // <- Обратите внимание :)
        this.trigger( 'click' );
};


Так что не вижу профита :)
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37966313
buyboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда так:
1) тег а убираем из ячейки cell - и вставляем текст Изменить прямо в ячейку
2) во внедренных в страницу css стилях прописываем td.cell { cursor: pointer;}
и применяем jQuery так =
Код: javascript
1.
2.
3.
4.
5.
      jQuery("td.cell").click(function(){
        var productManufacturer = jQuery(this).parent().children("td[class$='name']").text();
        var productName = jQuery(this).parent().children("td[class$='manufacturer']").text();
        alert(productName + '\n' + productManufacturer);
      });

и можем добавлять ячейки - сколько душе угодно
так как выборка текста будет привязана на класс соответствующей ячейки
рабочий файл прикладываю
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37966338
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buyboy,
1. td.cell { cursor: pointer;} никто кроме Вас не поймёт, более того удивится тому, что ячейка таблицы (td) класса "ячейка" (cell) имеет cursor: pointer :)
2. зачем вообще в селекторах CSS и селекторах jQuery зашивать td? Если я завтра решу, что таблицы - это зло и переверстаю на дивы?
3. И чем в итоге Ваш вариант отличается от моего?

P.S.: анонимные функции - зло :) разрастаются и превращаются в нечитабельную лапшу
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37966428
buyboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAbuyboy,
1. td.cell { cursor: pointer;} никто кроме Вас не поймёт, более того удивится тому, что ячейка таблицы (td) класса "ячейка" (cell) имеет cursor: pointer :) — как, так не поймет?! такой код создает как минимум верстальщик, а то и web-мастер = такие люди должны знать эти вещи
2. зачем вообще в селекторах CSS и селекторах jQuery зашивать td? Если я завтра решу, что таблицы - это зло и переверстаю на дивы? — да ради бога! можна писать без td - ссылка на голое имя класса тоже гут
3. И чем в итоге Ваш вариант отличается от моего? — тем что я вижу по своему, а вы по своему = элементарно иная точка зрения

P.S.: анонимные функции - зло :) разрастаются и превращаются в нечитабельную лапшу — как нуб,без всякого сомнения соглашаюсь с гуру ну уж если не хочется убирать ссылку из ячейки :) тогда пусть будет так =
Код: javascript
1.
2.
3.
4.
5.
      jQuery(".update-product").click(function(){
        var productManufacturer = jQuery(this).parent().parent().children("td[class$='name']").text();
        var productName = jQuery(this).parent().parent().children("td[class$='manufacturer']").text();
        alert(productName + '\n' + productManufacturer);
      });
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37966441
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как то так...jQuery чай поболе будет!
Бесспорно!
Но он уже есть у автора...
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37966444
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeБукаф много.
Жукан.
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37966459
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaShSergeБукаф много.
Жукан.
Застрелиться что-ли?
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37966461
buyboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если стоит вопрос переверстки на дивы и не нужна привязка на тип тега, тогда так =
Код: javascript
1.
2.
3.
4.
5.
jQuery(".update-product").click(function(){
  var productManufacturer = jQuery(this).parentsUntil(".product").children("[class$='manufacturer']").text();
  var productName = jQuery(this).parentsUntil(".product").children("[class$='name']").text();
  alert(productName + '\n' + productManufacturer);
});
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37966499
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда уже любители поматчить 100500 раз одни и теже массивы строк в поисках ожного и того же на радость пользователям мобильных и/или слабых устройств состарятся и уйдут на пенсию, а?

Чтоб пройти "1 квартал и свернуть направо" во чтобы-то не стало надо отfindить все возможные повороты, отматчить все попадающиеся названия улиц, свериться с гуглмапсом и пустить десяток псов, чтобы разнюхали.

Эй, бро! ОДИН квартал прямо, потом - НАПРАВО. Всё!
...
Рейтинг: 0 / 0
Можно ли упростить JS код ?
    #37966500
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA предложил наиболее красивое решение

Тему закрываю, потому что превращается непонятно во что.
...
Рейтинг: 0 / 0
19 сообщений из 44, страница 2 из 2
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Можно ли упростить JS код ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]