Изменение фона Jquery и CSS

#javascript #jquery

#javascript #jquery

Вопрос:

У меня проблема со следующей строкой:

 document.getElementById("giftcard").getElementsByTagName("label").style.backgroundImage ="url(giftcard_icon-d.jpg)";
  

Я пытаюсь изменить фоновое изображение после нажатия на label .

У меня действительно есть 5 label секунд на странице, но когда я нажимаю на label , фон должен изменить его. Другие надписи следует сбросить, чтобы использовать это giftcard_icon-d.jpg изображение в качестве фона.

Как я могу это исправить?

 $(document).ready(function() {
    $('#giftcard label').click(function() {
       document.getElementById("giftcard").getElementsByTagName("label").style.backgroundImage ="url(giftcard_icon-d.jpg)";
       this.style.backgroundImage ="url(giftcard_icon-a.jpg)";      
}); 
  

Комментарии:

1. Что именно происходит? Фон не меняется ни для одного из них???

Ответ №1:

Если вы используете jQuery, это должно сработать:

 $(document).ready(function() {
    $('#giftcard label').click(function() {
        $("#giftcard label").css("background-image", "url(giftcard_icon-a.jpg)");
    });
});
  

Но это также зависит от того, правильный ли идентификатор, присутствует ли метка и допустим ли URL изображения.

Для нескольких label вас должен устраивать селектор:

 $("#giftcard > label").css("background-image", "url(giftcard_icon-a.jpg)");
  

Для обновления после завершения именно того, что вы хотели:

 $('#giftcard label').click(function() {
    $("#giftcard label").css("background-image", "url(giftcard_icon-d.jpg)");
    $(this).css("background-image", "url(giftcard_icon-a.jpg)");        
});
  

Комментарии:

1. Идеально! теперь это работает. Я использовал этот способ: ‘$ (‘#ярлык подарочной карты’).click(функция() { $(«ярлык подарочной карты #»).css(«фоновое изображение», «url(giftcard_icon-d.jpg )»); this.style.BackgroundImage =»url (giftcard_icon-a.jpg )»; }); ‘

2. Да, я правильно разработал то, что вы хотели, после того, как я опубликовал — я добавлю это к ответу.

Ответ №2:

Во-первых, ваше смешивание ванильного javascript и jquery здесь кажется немного глупым. Если вы хотите изменить другие метки, чтобы «сбросить» их, вы можете сделать что-то вроде этого:

  $(document).ready(function() {

  $('#giftcard').delegate('label', 'click', function() {

    $(this).css('background', 'url(giftcard_icon-d.jpg)');

    $('#giftcard > label').not(this)
     .css('background', 'url(giftcard_icon-a.jpg)');

  }); 

});
  

скрипка: http://jsfiddle.net/garreh/GUFtx

Ответ №3:

Если я правильно понял, это должно сработать

 $(function() {
    $('#giftcard label').click(function() {
        $('#giftcard label').css("background-image", "url(giftcard_icon-d.jpg)");
        $(this).css("background-image", "url(giftcard_icon-a.jpg)");
    });
});
  

рабочий пример
http://jsfiddle.net/FvNdR

Комментарии:

1. @ XML guy Я предполагаю, что ваши сомнения были только в том, как установить свойства стиля в jquery, когда @ Mr. Disappointment опубликовал свой ответ, вы получили идею и решили самостоятельно.