За последние 24 часа нас посетили 21976 программистов и 1111 роботов. Сейчас ищет 761 программист ...

$(this) внутри функций

Тема в разделе "JavaScript и AJAX", создана пользователем IvanKut, 3 июл 2020.

  1. IvanKut

    IvanKut Активный пользователь

    С нами с:
    27 июл 2018
    Сообщения:
    258
    Симпатии:
    0
    Приветствую
    Как правильно обеспечивать поддержку $(this) внутри функций которые вызываю.
    Конкретно в данном примере мне нужно сделать, чтобы внутри $.getJSON был доступен $(this) (элемент по которому был клик).
    У меня две мысли
    1 - Сделать var?
    2 - Передать в function(data, $(this))

    Как правильно?

    Код (Text):
    1. $( function() {
    2.     $('.transactionBind').on('select2:select', function (e) {
    3.       var data = e.params.data;
    4.       $.getJSON("api/transaction.php?do=setGroup", {trID:$(this).data('trid'), groupID:data.id}, function(data) {
    5.             $(this).css('border-color', 'red');    
    6.       });
    7.     });
    8. });
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.825
    Симпатии:
    738
    Адрес:
    Татарстан
    1.
    2 вряд ли передашь
     
  3. Dron-Boy

    Dron-Boy Старожил

    С нами с:
    20 ноя 2014
    Сообщения:
    1.041
    Симпатии:
    126
    Объяви переменную перед твои $.getJSON
    Код (Javascript):
    1. $( function() {
    2.     $('.transactionBind').on('select2:select', function (e) {
    3.       var el = $(this);
    4.       var data = e.params.data;
    5.       $.getJSON("api/transaction.php?do=setGroup", {trID:$(this).data('trid'), groupID:data.id}, function(data) {
    6.             $(this).css('border-color', 'red');  
    7.             $(el).Твои действия
    8.       });
    9.     });
    10. });
     
  4. IvanKut

    IvanKut Активный пользователь

    С нами с:
    27 июл 2018
    Сообщения:
    258
    Симпатии:
    0
    @Dron-Boy кстати, я думал если var=el делаешь, то внутри $.getJSON можно обращаться без $() ? А у Вас в $()
     
  5. IvanKut

    IvanKut Активный пользователь

    С нами с:
    27 июл 2018
    Сообщения:
    258
    Симпатии:
    0
    Понял в чем у меня проблема
    https://jsfiddle.net/urtdr/epjsf3vx/1/
    Я использую для select компонент select2 jquery. И он сам элемент select прячет, а рисует свой компонент в span
    Когда я в коде делаю
    Код (Text):
    1. $(this).css({ border: '2px solid #009900'});
    Я меняю стиль скрытому элементу, а не созданному select2 span элементу.
    Идея - что на странице много select-ов и после выбора элемента идет запрос на сервер, данные сохраняются и select становится зеленым.
    Так вот вопрос - подскажите плиз, как можно покрасить созданный select2 комбобокс.
    На фиделе пример.
    [​IMG]
     
  6. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.825
    Симпатии:
    738
    Адрес:
    Татарстан
    Может доку почитать от select 2
     
    denis01 нравится это.
  7. IvanKut

    IvanKut Активный пользователь

    С нами с:
    27 июл 2018
    Сообщения:
    258
    Симпатии:
    0
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    У тебя ошибка в css, вместо класса селектор для тега
     
  9. IvanKut

    IvanKut Активный пользователь

    С нами с:
    27 июл 2018
    Сообщения:
    258
    Симпатии:
    0
    @denis01 блин вот я лошара:)))

    Смотрите, получается что стиль этот назначается по умолчанию элементу. Получается после события я должен модифицировать цвет дива
    https://jsfiddle.net/urtdr/epjsf3vx/26/

    Правильно же я написал, что для класса myClass цвет должен поменяться на #99ff66?

    Код (Text):
    1. $('.myClass').css('background-color','#99ff66 !important');
    Благодарю!