2016-01-11 3 views
0

Я хочу получить все img src от родителя указателя, чтобы удалить часть из них. Когда у меня есть выбранная фотография, src закончил _selected.jpg, и когда я нажимаю ссылку, содержащую другой img, я хочу удалить _selected.jpg из старого выбранного img.jQuery - получить все img из src из родителя и удалить его часть

HTML

<div class="attribute_list"> 
    <ul id="color_to_pick_list" class="clearfix"> 
     <li class="selected"> 
      <a href="http://xxx.html" id="color_18" name="46cm" class="color_pick selected" title="46cm"> 
       <img src="http://xxx/co/18_selected.jpg" alt="46cm" title="46cm" width="102" height="100" class="attribute_pic"> 
      </a> 
     </li> 
     <li> 
      <a href="xxx.html" id="color_19" name="56 cm" class="color_pick" title="56 cm"> 
       <img src="http://xxx/co/19.jpg" alt="56 cm" title="56 cm" width="102" height="100" class="attribute_pic"> 
      </a> 
     </li> 
    </ul> 
    <input type="hidden" class="color_pick_hidden" name="group_4" value="18"> 
</div> 

Функция ЯШ:

function colorPickerClick(elt){ 
var isSelected = "_selected"; 
var jpg = ".jpg"; 

id_attribute = $(elt).attr('id').replace('color_', ''); 

$(elt).parent().parent().find('img').attr('src',$(elt).parent().parent().find('img').attr('src').replace(isSelected + jpg, jpg)); 

$(elt).parent().parent().children().removeClass('selected'); 
$(elt).fadeTo('fast', 1, function(){ 
$(this).fadeTo('fast', 0, function(){ 
    $(this).fadeTo('fast', 1, function(){ 
     $(this).parent().addClass('selected'); 
     }); 
    }); 
}); 
$(elt).parent().parent().parent().children('.color_pick_hidden').val(id_attribute); 


$(elt).children("img").attr('src',$(elt).children("img").attr('src').replace(jpg,isSelected + jpg));} 

Событие:

$(document).on('click', '.color_pick', function(e){ 
e.preventDefault(); 
colorPickerClick($(this)); 
getProductAttribute();}); 

Когда я нажимаю на 19.jpg, то 18_selected.jpg становится 18.jpg но 19.jpg становится 18_selected.jpg

ответ

0
function colorPickerClick(elt) { 
var isSelected = "_selected"; 
var jpg = ".jpg"; 

id_attribute = $(elt).attr('id').replace('color_', ''); 

$(elt).parent().parent().children('.selected').find('img').attr('src',$(elt).parent().parent().children('.selected').find('img').attr('src').replace(isSelected + jpg, jpg)); 

$(elt).parent().parent().children().removeClass('selected'); 
$(elt).fadeTo('fast', 1, function(){ 
$(this).fadeTo('fast', 0, function(){ 
    $(this).fadeTo('fast', 1, function(){ 
     $(this).parent().addClass('selected'); 
     }); 
    }); 
}); 
$(elt).parent().parent().parent().children('.color_pick_hidden').val(id_attribute); 


$(elt).children("img").attr('src',$(elt).children("img").attr('src').replace(jpg, isSelected + jpg));} 

Я нашел хороший селектор, наконец! :)

Но у меня есть другой ответ. Как я мог бы создать условие для селектора?

Если img, который указан, относится к классу attribute_pic_color, не добавляйте "_selected" к имени файла img.

Надеюсь, кто-то может помочь мне в решении этой проблемы.