#jquery #bootstrap-4 #jquery-ui-tooltip #angular-slickgrid
Вопрос:
Заголовок столбца имеет класс «.slick-имя столбца».
Я добавил этот jquery —
var text = $(".slick-column-name").text();
$(".slick-column-name").tooltip({ title: text });
Но в каждой всплывающей подсказке отображается имя каждого столбца ( например, идентификатор , описание, заголовок являются заголовками столбцов, поэтому всплывающая подсказка для каждого заголовка столбца отображается как «Заголовок описания идентификатора»).
Ответ №1:
Обратите внимание, что я автор Angular-Slickgrid, и, как упоминалось в комментарии в предыдущем ответе, Angular-Slickgrid-это оболочка поверх SlickGrid, которая была создана несколько лет назад (когда jQuery/jQueryUI были всей шумихой), и поэтому jQuery-это глубокая зависимость.
Теперь, чтобы сосредоточиться на вашем вопросе, если мы будем искать непосредственно в коде класс css, который вы определили, мы увидим эту строку со следующим кодом
$("<div class='ui-state-default slick-group-header-column' />")
.html("<span class='slick-column-name'>" m.name "</span>")
.attr("id", "" uid m.id)
.attr("title", m.toolTip || "")
.data("column", m)
.addClass(m.headerCssClass || "")
.addClass(hasFrozenColumns() amp;amp; (columnsLength - 1) > options.frozenColumn? 'frozen': '')
.appendTo(hasFrozenColumns() amp;amp; (columnsLength - 1) > options.frozenColumn? $groupHeadersR[index]: $groupHeadersL[index]);
}
о, посмотри на это… Там уже есть toolTip
атрибут, так откуда же это взялось? Это опция в определении столбца (интерфейс столбца в угловой сетке)
Итак, короткий ответ таков… просто используйте его, сделав свой toolTip
таким же, как ваш name
, и вы должны быть готовы к работе
this.columnDefinitions = [
{ id: 'firstName', field: 'firstName', name: 'First Name', toolTip: 'First Name Tooltip' },
// ...
}
];
Это должно сработать… обратите внимание, что я не тестировал его, но я просто проверил код, чтобы найти ответ. Всегда хорошо посмотреть непосредственно на код, вы найдете много ответов на эти вопросы.
Редактировать
Я попробовал это, и это действительно работает так, как задумывалось с toolTip
собственностью
Комментарии:
1. Сам человек!! Прежде всего , я хочу поблагодарить вас за поддержку и создание этой вилки, я знаю по крайней мере 10 продуктов на работе, которые используют вашу библиотеку! Переходя к вопросу , я попытался добавить всплывающую подсказку:»Имя» , но всплывающие подсказки были белого цвета. Я не знал , как сделать их черными, и раньше я использовал jquery для использования подсказок на работе, и они были черными, поэтому я просто выбрал jquery. Еще раз большое спасибо!
2. Значит, это просто проблема с цветовой стилизацией? Вы можете посмотреть файл scss и, возможно, внести свой вклад в исправление этого? … и спасибо за приятные комплименты, рад это слышать и рад получить поддержку (звезду), если вы еще этого не сделали 😉
3. Я допустил небольшую ошибку, правильное свойство для использования-это
tooltip
не заголовок, и оно работает, как видно на экране печати4. Да, я использовал саму подсказку свойства. просто пытаюсь понять, как их оформить.
5. Это обычная подсказка браузера, и она варьируется от браузера к браузеру, на первоначальный вопрос был дан ответ. Оформление всплывающей подсказки-это совершенно другая тема, и в Интернете есть много ответов (хотя трудно найти чистый css).
Ответ №2:
var text = $(".slick-column-name").text();
вернет весь текст для ВСЕХ столбцов. Таким образом, вы получите текст для всех элементов этого класса.
Поэтому, если вы выполните это с помощью: console.log(text)
вы увидите все заголовки столбцов, выводимые на консоль разработчика. Именно этого и следовало ожидать!
Похоже, у вас есть некоторое несоответствие в том, что здесь может сделать jQuery — $
селектор получает ВСЕ элементы с этим именем класса и недостаточно интуитивно понятен, чтобы понять, что вы хотите получить соответствие 1:1 между текстом и заголовком столбца.
То, что вы хотите сделать вместо этого, — это:
- получить все заголовки столбцов (НЕ ТЕКСТ)
- просмотрите каждый заголовок столбца и установите подсказку имя столбца в текст заголовка столбца.
Я не на 100% знаком с slickgrid, но это должно дать вам представление:
// I'm using $ in the variable name to label this element as a jQuery extended variable
var $columnNames = $(".slick-column-name");
$columnNames.each(function(elem) {
// this represents a single column header
var $elem = $(elem);
// gets the individual text for a header
var text = $elem.text();
// we grab the CLOSEST parent element that matches ".slick-column-name" and set the tooltip
var $columnHeading = $elem.closest(".slick-column-name").tooltip({ title: text });
});
Я не проверял код, но это должно направить вас по нужному пути.
Теперь я предполагаю, что вы имеете в виду УГЛОВУЮ СЕТКУ (случаются ошибки в написании!) — вам следует избегать смешивания jQuery с Angular. Смешивание этих двух может привести к неожиданным побочным эффектам из-за повторного рендеринга (представьте, что всплывающие подсказки работают одну минуту, затем вы вносите изменения, и всплывающие подсказки исчезают, когда что-то меняется!)
Проверка репозитория github для Angular SlickGrid: https://github.com/ghiscoding/Angular-Slickgrid/blob/master/src/app/examples/grid-headerbutton.component.ts
Похоже, что есть опция всплывающей подсказки, которую вы также можете использовать для этого с помощью Angular (их демонстрационный пример выглядит здесь: https://ghiscoding.github.io/Angular-Slickgrid/#/headerbutton )
Комментарии:
1. обратите внимание, что я автор Angular-Slickgrid, пару вещей, которые нужно добавить к этому в связи с вашим ответом. Angular-Slickgrid-это оболочка поверх SlickGrid, которая имеет глубокую зависимость от jQuery (возможно, когда-нибудь этого не произойдет, но не без полной перезаписи, эта библиотека была создана во время jQuery/jQueryUI, где была большая шумиха). На самом деле нет необходимости идти по пути jQuery для этого вопроса, я опубликую ответ
2. Спасибо, что ответили! Я пошел с этим решением в конце дня , это, вероятно, не лучшее решение, такое как ghiscoding, и вы упомянули. Я новичок во всей сцене веб-разработчиков, и slickgrid для меня еще более сложен, не говоря уже о JS, angular и других вещах.