2014-09-10 2 views
0

У меня есть динамический список уменьшенных изображений. Каждый раз, когда изображение выбрано, я хочу отменить выбор текущего выбранного изображения и выбрать только что щелкнув изображение. HTML выглядит следующим образом:выделить и выделить выделение в jquery

<ul class="imgList"> 
    <li> 
     <div id="item1" class="imgStyle" order="{#}" imgId="{imgId}"> 
      <img src="{imgPath}"/> 
     </div> 
    </li> 
    <li> 
     <div id="item2" class="imgStyle" order="{#}" imgId="{imgId}"> 
      <img src="{imgPath}"/> 
     </div> 
    </li> 
    <li> 
     <div id="itemn" class="imgStyle" order="{#}" imgId="{imgId}"> 
      <img src="{imgPath}"/> 
     </div> 
    </li> 
</ul> 

И я использую JQuery, чтобы связать элементы на событие щелчка, как это:

$(".imgStyle img").bind("click", function() { 
    $(item1).css("border", "5px solid grey"); 
} 

Я легко может выбрать/выделить пункт щелкнул. Но как снять выделение ранее выделенного элемента (div)? Спасибо!

ответ

2

Вы должны использовать классы CSS:

.selected { border: 5px solid gray;} 

$('.imgList').on('click','img', function() { 
    $(this).parents('.imgList').find('.selected').removeClass('selected').end().end().addClass('selected'); 
}); 
+0

Я думал, что быстрее. Но так как вы предоставили relavent css-стиль, я бы добавил +1 к вашему ответу =) –

+0

Спасибо! Именно то, что я искал .. – kriver

-1

Следуя методу вы уже делаете:

$(".imgStyle img").bind("click", function() { 
    $(".imgStyle img").removeAttr("style"); 
    $(item1).css("border", "5px solid grey"); 
} 

Поскольку .css() метода Jquery добавляет свойство атрибута элемента инлайн style, убрав этот стиль everyother IMG должен быть достаточно

BUT

Лучше использовать класс для определения выбранного элемента, например:

.selected { 
    border: 5px solid gray; 
} 

И потом:

$(".imgStyle img").bind("click", function() { 
    $(".selected").removeClass("selected"); 
    $(this).addClass("selected"); 
} 
+0

И что, если существуют существующие элементы стиля, которые он не хочет удалять? –

+0

@JamesHill, я взял из 'The html, как показано ниже:' что это не так ... – LcSalazar

1

Я редко напрямую не манипулируют стиль CSS, а добавить класс и, когда он больше не используется, Я просто удаляю класс.

например.

$(".imgStyle img").bind("click", function() { 
    $(".imgStyle").removeClass("highlight"); 
    $(item1).addClass("highlight"); 
} 
+0

Спасибо за более простое решение! – kriver