Вам не нужен этот условный оператор и цикл не нужен.
$('.sold').tooltipster({...});
выберет все элементы, которые имеют class = "sold", поэтому вам не нужно проверятьимя класса, выполнив некоторые условные циклы.
Просто добавьте некоторую функцию в ваш селектор, которая считывает необходимые значения из вашего HTML до того, как будет создана ваша подсказка, затем передайте эти значения в вашу подсказку.
Например, вы можете добавить
var name = $(this).attr('data-name');
и затем передать переменную в всплывающую подсказку для отображения во всплывающей подсказке, когда она активирована.
Редактировать: Большепример кода
Несколько быстрых и грязных примеров (с использованием встроенной подсказки jQueryUI):
Четыре деления, два разных класса (бесплатные и продаваемые), каждый класс используется в качестве селектора jQuery.Подсказка создается для каждого элемента <p>
внутри элементов div.Атрибут данных каждого div присваивается переменной, которая затем вставляется в текст всплывающей подсказки.Как вы видите, он не использует никаких циклов или условий.
HTML:
<div data-stuff="Some data for sold building" class="sold">
<p>Some sold building</p>
</div>
<div data-stuff="More data for another sold building" class="sold">
<p>Another sold building</p>
</div>
<div data-stuff="Some data for a free building" class="free">
<p>Some free building</p>
</div>
<div data-stuff="More data for another free building" class="free">
<p>Another free building</p>
</div>
jQuery:
$(function(){
$(".free").tooltip({
track: true,
items: "p",
content: function(){
var text = $(this).parent().attr("data-stuff");
return "<div class='tooltipfree'>"+text+"</div>";
},
});
});
$(function(){
$(".sold").tooltip({
track: true,
items: "p",
content: function(){
var text = $(this).parent().attr("data-stuff");
return "<div class='tooltipsold'>"+text+"</div>";
},
});
});
Небольшой CSS для этого примера:
.sold {
background: #ff9999;
font-size: 18px;
font-weight: bold;
border: 1px solid black;
margin: 10px;
}
.free {
background: #99ff99;
font-size: 18px;
font-weight: bold;
border: 1px solid black;
margin: 10px;
}
.tooltipfree {
background: #99ff99;
border: 1px solid black;
width: 70px;
}
.tooltipsold {
background: #ff9999;
border: 1px solid black;
width: 70px;
}
Редактировать: код Tooltipster
Я впервые взглянул на документацию Tooltipster, затем попробовал еще более простой подход, и он сработал (на локальном сервере,не на codepen.io):
$(function(){
$(".free").tooltipster({
functionBefore: function (instance, helper) {
var text = $(helper.origin).closest(".free").attr("data-stuff");
instance.content(text);
},
});
});
$(function(){
$(".sold").tooltipster({
functionBefore: function (instance, helper) {
var text = $(helper.origin).closest(".sold").attr("data-stuff");
instance.content(text);
},
});
});