Как использовать jQuery для переключения между плюсом и минусом при свертывании и расширении?

Создайте список элементов на основе их weights:

items = [1, 2, 3, 4, 5, 6]
probabilities= [0.1, 0.05, 0.05, 0.2, 0.4, 0.2]
# if the list of probs is normalized (sum(probs) == 1), omit this part
prob = sum(probabilities) # find sum of probs, to normalize them
c = (1.0)/prob # a multiplier to make a list of normalized probs
probabilities = map(lambda x: c*x, probabilities)
print probabilities

ml = max(probabilities, key=lambda x: len(str(x)) - str(x).find('.'))
ml = len(str(ml)) - str(ml).find('.') -1
amounts = [ int(x*(10**ml)) for x in probabilities]
itemsList = list()
for i in range(0, len(items)): # iterate through original items
  itemsList += items[i:i+1]*amounts[i]

# choose from itemsList randomly
print itemsList

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

Кроме того, это может быть интересным.

10
задан ahsteele 9 April 2013 в 21:44
поделиться

3 ответа

Измените разметку msg_head на что-то вроде этого-

<p class="msg_head">Header-1 <span>[-]</span></p>

и измените функцию переключения, чтобы она выглядела так-

$(".msg_head").click(function(){
    $(this).next(".msg_body").slideToggle(100);
})
.toggle( function() {
    $(this).children("span").text("[+]");
}, function() {
    $(this).children("span").text("[-]");
});
18
ответ дан 3 December 2019 в 16:29
поделиться

Именно это есть у меня на собственном сайте. Вот как я это делаю:

$(".question").click(function () {
    if ($(this).next(".answer").is(":hidden")) {
        $(this).next(".answer").slideDown("slow");
        $(this).children('span').text('-');
    } else {
        $(this).next(".answer").slideUp("slow");
        $(this).children('span').text('+');
    }
}); 

HTML выглядит так:

<div class="question">
    <span>+</span>blahblah
</div>
<div class="answer">blahblah</div>
2
ответ дан 3 December 2019 в 16:29
поделиться

Самый простой способ сделать это - использовать .toggleClass (className) . Используя этот метод, вы можете добавить или удалить класс из элемента. Поэтому изменение вашего кода на (непроверенный) код ниже должно помочь. Вы захотите сместить отступы на эквивалентную величину, чтобы они соответствовали вашим графическим файлам.

JavaScript

$(".msg_head").click(function() {
    $(this).next(".msg_body").slideToggle(100);
    $(this).toggleClass('msg_head_expanded');
});

CSS

.msg_head
{
  padding: 5px 10px;
  cursor: pointer;
  position: relative;
  background:#FFCCCC url('plus.png') no-repeat 0 50;
  margin:1px;
}

.msg_head_expanded
{
   background:#FFCCCC url('minus.png') no-repeat 0 50;
}
5
ответ дан 3 December 2019 в 16:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: