ФорумПрограммированиеJavaScript → jQuery: к чему сделать привязку?..

jQuery: к чему сделать привязку?..

  • kolobok

    Сообщения: 48 Репутация: N Группа: Кто попало

    Spritz 31 августа 2010 г. 14:05

    Есть итоговая корзина с товарами, список, напротив каждой позиции ссылка "удалить товар". Скрипт по моему мнению должен работать так: Если щелкнули по какой то ссылке, то скрипт берет значение id товара и кол-во этого товара, после чего передает эти параметры скрипту допустим delBasket.php, который в свою очередь обновляет таблицу в базе и получает новую сумму заказа. После чего тот самый jquery скрипт делает hide диву который мы удалили и обновляет сумму заказа.
    Так вот вопрос, как этому скрипту считать данные id и кол-во товара и потом захайдить див?
    Т.е например:
    $.ajax({
    type: "POST",
    url: "delBasket.php",
    data: "id="+$(".divBasket :input").val(),
    - Я про последнюю строчку, ведь у меня весь список имеет один и тот же класс.
    PS: Или я вообще не тем путем иду?
  • Chiffa

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 31 августа 2010 г. 14:20, спустя 14 минут 57 секунд

    во-первых есть готовая функция $.post, как по мне она удобней
    $.post('delBasket.php', {id: $(".divBasket :input").val()}, function(){//спрятали див, обновили сумму});


    а id товара можно передать кучей способов, самый простой (первый пришедший в голову) зашить его в id ссылки которая "delete item"
  • kolobok

    Сообщения: 48 Репутация: N Группа: Кто попало

    Spritz 31 августа 2010 г. 14:44, спустя 23 минуты 56 секунд

    Я только разбираюсь с jquery, яваскрипт подавно не знаю… Вроде как .ajax самый полный метод который включает в себя и пост и гет. Просто на нем пример похожий попался поэтому его и использую.
    id допустим зашью в ссылку, при убирании дива понимаю, что можно будет найти див, составив конструкцию типа ..contains(id=), а как активировать скрипт .ajax чтобы он при этом из нужного дива захватил параметры?
  • Chiffa

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 31 августа 2010 г. 14:52, спустя 7 минут 49 секунд

    ну вот можно извратиться как-то так… попробуйте адаптировать под себя
    <div id="basketItem_1">Хренотень Улучшенная <span class="count">3</span> шт. <a href="" id="1" class="deleteMe">Удалить</a></div>

    $('a.deleteMe').click(function(){
    $getJSON(
    'delBasket.php',
    {id: $(this).attr('id'), count: $('#basketItem_'+$(this).attr('id')+' .count').text()},
    function(data){
    /*спрятали див basketItem_+data.id
    подставили в сумму data.newSum
    */
    });
    });

    конечный скрипт будет сильно зависеть от вашей верстки. почитайте про селекторы в jquery там можно достать почти всё почти отовсюду :)
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 31 августа 2010 г. 15:12, спустя 20 минут 4 секунды

    мб лучше так - count: $(this).find('.count').text()
    Высокоуровневое абстрактное говно
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 31 августа 2010 г. 15:14, спустя 2 минуты 2 секунды

    когда делаешь что-то в базе - надо всегда знать, выполнено ли это что-то или нет. например, если товар удален из корзины - то только тогда удалять из списка на странице. если нет - сообщить юзверю, мол, облом.
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 31 августа 2010 г. 15:16, спустя 1 минуту 51 секунду

    ой-ой)) чет не дописал))
    count: $(this).parent().find('.count').text()
    Высокоуровневое абстрактное говно
  • Chiffa

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 31 августа 2010 г. 15:35, спустя 18 минут 31 секунду


    мб лучше так - count: $(this).find('.count').text()

    тоже вариант.. может даже надежней будет))
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 31 августа 2010 г. 16:15, спустя 40 минут 48 секунд

    оспади исусе, что с вами?
    $('.count', this).text();
    Спустя 72 сек.
    http://brandonaaron.net/blog/2009/06/24/understanding-the-context-in-jquery
  • Chiffa

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 31 августа 2010 г. 16:20, спустя 4 минуты 46 секунд

    Абырвалг, йопт, точна!
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 31 августа 2010 г. 16:22, спустя 1 минуту 50 секунд

    bots
    Сапожник без сапог
  • kolobok

    Сообщения: 48 Репутация: N Группа: Кто попало

    Spritz 2 сентября 2010 г. 12:53, спустя 1 день 20 часов 30 минут

    Потестил все варианты. Вариант Chiffa и Stasovsky работает, вариант Абырвалг'а - нифига.

    <script type = "text/javascript">
    $('a.deleteMe').click(function(){
    //работает
    //var msg = $('#basketItem_'+$(this).attr('id')+' .count').text();
    //тоже работает
    //var msg = $(this).parent().find('.count').text();
    //не работает
    //var msg = $('.count', this).text();
    alert(msg);
    });
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 2 сентября 2010 г. 13:05, спустя 11 минут 41 секунду

    попробуй this в $() обернуть
  • kolobok

    Сообщения: 48 Репутация: N Группа: Кто попало

    Spritz 2 сентября 2010 г. 13:24, спустя 18 минут 48 секунд

    Не помогло, вот так сработало $('.count', $(this).parent()).text();
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 2 сентября 2010 г. 15:14, спустя 1 час 50 минут 19 секунд

    по примеру Главрыба надо так
    var parent = $(this).parent();
    $('.count', parent).text();

    ну по крайней мере у меня все норм…
    Высокоуровневое абстрактное говно

Пожалуйста, авторизуйтесь, чтобы написать комментарий!