Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Вопросы по jQuery

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Открыть новую тему     Написать ответ в эту тему

Jokerjar79



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Фильтр по слову "jquery" не дал какой-либо общей темы по этой библиотеке, поэтому решился создать. У меня возник такой вопрос: согласно справочной документации такой код:
 

Код:
  <p>1</p>
  <p>2</p>
  <p>3</p>
  <p>4</p>
 
  <script language="javascript">
      $("p")[0].html("test");
  </script>

 
должен <p>1</p> заменить на <p>test</p>. Но не работает. Пробовал еще так:
 

Код:
$("p").get(0).html("test");

 
Есть подозрения, что мануал, по которому осваиваю библиотеку, написан для более старой версии, а позже принцип обращения к конкретному элементу из коллекции как-то изменился. Кто знает, как реализовать это (версия библиотеки - v1.3.2)



Документация по jQuery - eng, рус

Всего записей: 710 | Зарегистр. 08-09-2007 | Отправлено: 16:22 11-08-2009 | Исправлено: Cheery, 07:35 09-08-2013
sulllivan

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый вечер всем!
Кто может помочь в написании скриптового запроса jquery в этим x-path.
 
//span[@class="spoiler" and text()="Показать"]
//span[text()="Показать"]

Всего записей: 14 | Зарегистр. 20-06-2019 | Отправлено: 22:12 27-06-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sulllivan

Цитата:
//span[@class="spoiler" and text()="Показать"]  

$("span.spoiler:contains('Показать')"), но это не точное совпадение, а проверка именно как части текста. на точное совпадение нужно добавить что то вида

Код:
$.expr[':'].textEquals = $.expr.createPseudo(function(arg) {
    return function( elem ) {
        return $(elem).text().match("^" + arg + "$");
    };
});

тогда  
$("span.spoiler:textEquals('Показать')")
 

Цитата:
span[text()="Показать"]

читать выше, просто убрать класс.

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 22:20 27-06-2019
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
$svg.find('path').removeAttr('class')
 
Спасибо, работает. Было бы ещё не плохо, если бы заменять можно было, чтобы были только class="cls-1', например.

Всего записей: 3440 | Зарегистр. 30-06-2002 | Отправлено: 03:37 16-07-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS

Цитата:
чтобы были только class="cls-1', например.

неужели и такие мелочи нужно подробно описывать?
$svg.find('path').attr('class', 'cls-1')

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 03:45 16-07-2019
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спасибо, теперь все элементы стали одного цвета, что немного не то, что задумывалось
Читаю про условия в JS и никак не пойму, как применить, чтобы работало с условием из CSS.

Всего записей: 3440 | Зарегистр. 30-06-2002 | Отправлено: 03:57 16-07-2019 | Исправлено: WONDROUS, 03:57 16-07-2019
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS

Цитата:
что немного не то, что задумывалось

вы просили всем <path> выставить один класс - это и сделано. если что нужно иначе - правильно формулируйте

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 04:00 16-07-2019
webproger



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
как применить, чтобы работало с условием из CSS

в строке

Цитата:
$svg.find('path').attr('class', 'cls-1')

вместо path укажите более конкретный селектор.

Всего записей: 23 | Зарегистр. 02-06-2019 | Отправлено: 17:20 16-07-2019
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
webproger
Спасибо за ответ, только сейчас увидел. Но пока оставил эту затею.
 
Но вопрос ещё возник по коду, что не так с этим скриптом, если при его применении появляется отступ в несколько пикселей снизу SVG? Пример и скрин.
Если скрипт отключить, то отступ снизу пропадает.
 
Сам скрипт:

Код:
$(document).ready(function() {
    $('img[src$=".svg"]').each(function() {
        var $img = jQuery(this);
        var imgURL = $img.attr('src');
        var attributes = $img.prop("attributes");
 
        $.get(imgURL, function(data) {
// Get the SVG tag, ignore the rest
            var $svg = jQuery(data).find('svg');
 
// Remove any invalid XML tags
            $svg = $svg.removeAttr('xmlns:a');
             
// Remove ID tags
            $svg = $svg.removeAttr('id');
 
// Remove title            
            $svg.find('title').remove();
 
// Loop through IMG attributes and apply on SVG
            $.each(attributes, function() {
                $svg.attr(this.name, this.value);
            });
 
// Replace IMG with SVG
            $img.replaceWith($svg);
        }, 'xml');
    });
});

Всего записей: 3440 | Зарегистр. 30-06-2002 | Отправлено: 07:23 18-07-2019 | Исправлено: WONDROUS, 07:23 18-07-2019
webproger



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WONDROUS
Добавьте для родителя line-height: 0;

Всего записей: 23 | Зарегистр. 02-06-2019 | Отправлено: 15:28 18-07-2019
WONDROUS



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
webproger
Спасибо, сработало!

Всего записей: 3440 | Зарегистр. 30-06-2002 | Отправлено: 17:00 18-07-2019
frb_noname

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть модальная форма для редактирования записей в БД, которая открывается кнопкой Edit. При этом передаются параметры текущей записи.
После открытия формы аякс-запросом заполняется селект:
 

Код:
 
 
$.ajax({
                    type : "POST",
                    url  : '../spr/Ctrl_spr_units/get_spr_for_UI',
                    dataType : "json",
                    success: function(data){
                        for(i=0; i<data.length; i++)  {
                                $("#full_name_edit").append("<option value='"+data[i].id+"'>"+data[i].full_name+"</option>");
                            }                
                        }// ----------------- End of Success ---------------------    
                 });
 

 
Потом устанавливается текущее значение селекта:
 

Код:
 
$('#full_name_edit option').eq(this.dataset.id_full_name).prop('selected',true);
 

 
И в этом проблема.
Текущее значение устанавливается только после повторного открытия модальной формы. При первом открытии - нет.  
Может с событиями что-то не учитываю? Или что еще?

Всего записей: 47 | Зарегистр. 03-11-2008 | Отправлено: 13:44 26-05-2020 | Исправлено: frb_noname, 13:51 26-05-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
frb_noname

Цитата:
Потом устанавливается текущее значение селекта:  

Потом - где в коде?
Цитата:
this.dataset.id_full_name

Чему равно?

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 13:57 26-05-2020
frb_noname

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
 
    $('#show_data').on('click','.item_edit',function(){    
            document.getElementById('my_edit_modal').reset();
            $('#Modal_Edit').modal('show');
             var tblstr = <?php  echo json_encode($tbl_str); ?>;// передаем объект JSON
              // из контроллера - список полей выборки.
              for (key in tblstr) { // перебор объекта и заполнение полей формы из
                          // атрибутов data*
                 if (tblstr.hasOwnProperty(key)) {// если тип поля - text
                     if ($('[name='+tblstr[key]+'_edit').is('input:text')){
                        $('[name='+tblstr[key]+'_edit').val($(this).data(tblstr[key]));      
                     }
                     else{
                         
                     }
                }  
              }
 
 
   
                $.ajax({
                    type : "POST",
                    url  : '../spr/Ctrl_spr_units/get_spr_for_UI',
                    dataType : "json",
                    success: function(data){
                        for(i=0; i<data.length; i++)  {
                                $("#full_name_edit").append("<option value='"+data[i].id+"'>"+data[i].full_name+"</option>");
                            }                
                        }// ----------------- End of Success ---------------------    
                 });
 
            $('#full_name_edit option').eq(this.dataset.id_full_name).prop('selected',true);
   
       
           
 

Всего записей: 47 | Зарегистр. 03-11-2008 | Отправлено: 14:04 26-05-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
frb_noname

Цитата:
$('#full_name_edit option').eq(this.dataset.id_full_name).prop('selected',true);  

На момент выполнения кода в селекте еще нет options.
Выполнять его нужно после наполнения.

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 14:07 26-05-2020
frb_noname

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
На момент выполнения кода в селекте еще нет options.
Выполнять его нужно после наполнения.

 
Как сделать? По событию на селекте? Типа change? Так?:
 

Код:
 
 
$( "full_name_edit" )  
  .change(function () {  
         $('#full_name_edit option').eq(this.dataset.id_full_name).prop('selected',true);  
  })  
  .change();  
 
 


Всего записей: 47 | Зарегистр. 03-11-2008 | Отправлено: 14:12 26-05-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
frb_noname
Я же сказал - после наполнения. То есть после
Цитата:
for(i=0; i<data.length; i++)  {  
                                $("#full_name_edit").append("<option value='"+data[i].id+"'>"+data[i].full_name+"</option>");  
                            }                
                        }// ----------------- End of Success ---------------------    

Внутри метода success
 
Либо повесить на обработку события (хоть своего) и триггернуть его в конце success

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 14:14 26-05-2020 | Исправлено: Mavrikii, 14:15 26-05-2020
frb_noname

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Все четко. Mavrikii, спасибо.
 

Всего записей: 47 | Зарегистр. 03-11-2008 | Отправлено: 15:43 26-05-2020
frb_noname

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет!
 
Может кто-то в двух словах объяснить (или показать где именно почитать) принципиальную разницу этих двух конструкций, призванных делать одно и то же:
 
1.

Код:
$('#'+key+'_edit option[value="'+value+'"]').prop('selected', true);

 
2.

Код:
$('#'+key+'_edit option:contains('+value+')').prop('selected', 'selected');

 
Весь прикол в том, что они используются в одинаковых файлах вида - идентичных по коду. Массив для отображения в один и второй вид также приходит идентичный (тот же SQL-запрос). Но в одном случае первая конструкция работает, во втором - нет. Поэтому нагуглил вторую. Но она не работает там, где работает первая!
 
Так суть разницы-то между ними в чем?

Всего записей: 47 | Зарегистр. 03-11-2008 | Отправлено: 10:24 05-06-2020 | Исправлено: frb_noname, 10:34 05-06-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
frb_noname
value смотрит атрибут value тега а contain проверяет наличие текста внутри тега Во втором случае тоже нужны кавычки.
<option value='value'>....</option>
И
<option...>... value ...</option>

Всего записей: 15687 | Зарегистр. 20-09-2014 | Отправлено: 10:57 05-06-2020
destiny child



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос.
Есть вызов диалога.

Код:
 
const dlg = $('<div></div>').html('temporal placeholder')
                            .dialog({
                                height: 300,
                                width: 300,
                                title: 'Extended info about the event'
                            });
dlg.dialog('open');
dlg.html('<some aditional html based text with detailed info>');
 

всё норм. диалог показывается. НО)) слишком неказисто выглядит.
Да, есть вроде как темы для UI элементов в той же jquery библиотеке, но - там подразумевается применение С НАЧАЛА загрузки страницы применение соответствующего css.
А это не подходит, т.к. диалог создается в куске, скажем так, кода, который потом догружается к основному шаблону страницы в django проекте. И для редактирования доступны только части, условно говоря, <body>...</body> блока.
Вопрос - как на лету применять какую-то тему к диалогу в таких условиях? Или как практичнее и правильно применить что-то из возможностей bootstrap библиотеки? Там вроде тоже есть какие-то "раскраски" элементов UI.
Приблизительно хотелось бы, к примеру, кнопку закрытия диалога сделать явно выделенной, возможно графической - типа там кружочек с красным крестиком. Границу диалога тоже явно трехмерно отрисовать. Выпукло что ли))) Подложку на весь "задник" фона диалога наложить - или графическую, или по шаблону заливки как-то....

Всего записей: 3938 | Зарегистр. 01-04-2006 | Отправлено: 21:33 29-11-2020 | Исправлено: destiny child, 21:37 29-11-2020
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Компьютерный форум Ru.Board » Интернет » Web-программирование » Вопросы по jQuery


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru