Переключение изображения с помощью jQuery

Вы можете попробовать Guava Заказ :

Function getStartDate = new Function() {
    public Date apply(Item item) {
        return item.getStartDate();
    }
};

List orderedItems = Ordering.natural().onResultOf(getStartDate).
                          sortedCopy(items);

14
задан Jon Tackabury 4 December 2008 в 15:28
поделиться

7 ответов

Почему установленный переменная, когда это не необходимо?

$(obj).children("img").toggle(
  function(){ $(this).attr("src", "Images/TreeExpand.gif"); },
  function(){ $(this).attr("src", "Images/TreeCollapse.gif"); }
);
24
ответ дан 24 October 2019 в 05:06
поделиться

Больше jQueryish? Возможно! Более ясный? Я не уверен!

var image = $(obj).children("img");
$(image).toggle(
  function () { $(image).attr("src", "Images/TreeExpand.gif");},
  function () { $(image).attr("src", "Images/TreeCollapse.gif");}
);
4
ответ дан 24 October 2019 в 05:06
поделиться

Вы могли сделать что-то вроде этого

, например,

$(function()
    {
       $(obj)
       .children("img")
       .attr('src', swapImage );    
    });

function swapImage(){
    return ( 
              $(this).attr('src') == "Images/TreeCollapse.gif" ?
                                     "Images/TreeExpand.gif" :
                                     "Images/TreeCollapse.gif");
}

N.B в Вашем вопросе, Вы делаете $ (изображение) многократно. Лучше для кэширования поиска в var, например, $image=$ var (obj) .children ("img"); затем используйте $image оттуда на в.

1
ответ дан 24 October 2019 в 05:06
поделиться

Ваш изображение объект уже был бы экземпляром jQuery, таким образом, нет никакой потребности в Вас передать его до $ (...) снова.

А хорошая практика должна предварительно ожидать переменные, которые являются экземплярами jQuery с $ и используют их непосредственно после этого.

var $image = $(obj).children("img");
if ($image.attr("src") == "Images/TreeCollapse.gif")
   $image.attr("src", "Images/TreeExpand.gif");
else
   $image.attr("src", "Images/TreeCollapse.gif");
1
ответ дан 24 October 2019 в 05:06
поделиться

Возможные альтернативы:

  • Использование toggleClass и помещенный изображения в таблицу стилей как фоновые изображения.
  • Использование 2 изображения и переключатель их.
0
ответ дан 24 October 2019 в 05:06
поделиться

Ничего себе. Ответы появляются, летя в, не так ли? Все вышеупомянутое работало бы, но Вы могли попробовать это за остроту (оно не тестируется)...

image.setAttribute("src", "Images/Tree" + ((image.getAttribute("src").indexOf("Collapse")>0) ? "Expand" : "Collapse") + ".gif");

Обновление: я только что протестировал это, и это работает, так был бы человек, который голосовал за то, чтобы это вниз хотело объяснить, почему они сделали это?

0
ответ дан 24 October 2019 в 05:06
поделиться

Едва ли.

я знаю... чрезвычайно полезный ответ. То, что Вы делаете, довольно сжато, и я не так уверен, что было бы что-либо для создания этого большим количеством "jQueryish", как Вы просите.

теперь в зависимости от того, как Вы выполняете итерации через это при выполнении его к экземплярам повторного изображения это - то, где могла бы быть некоторая оптимизация jQuery.

0
ответ дан 24 October 2019 в 05:06
поделиться
Другие вопросы по тегам:

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