2012-07-01 3 views
2

Когда я нажимаю на изображение, я хочу сохранить это изображение src в переменной Javascript. Как я могу это сделать? Имейте в виду, что тег <a> предназначен для эффекта зависания. Поэтому, когда я нажимаю на <a>, я хочу источник изображения своего брата.Хранение img src в переменной javascript

Демо: http://jsfiddle.net/FVrTg/2

<div> 
    <img src = "http://upload.wikimedia.org/wikipedia/commons/thumb/2/26/YellowLabradorLooking_new.jpg/260px-YellowLabradorLooking_new.jpg"/> 
    <a href = "#"></a> 
</div> 

<div> 
    <img src = "http://whatiscat.com/wp-content/uploads/2011/07/cute_cat_2.whatiscat.com_.jpg"/> 
    <a href = "#"></a> 
</div> 

+0

Вы имеете в виду источник, как и в * данные изображения, в *, или просто 'значение атрибута src' IMG? Как '$ a.siblings ('img'). Prop ('src')'? –

+1

Вы хотите, чтобы вы захотели сохранить URL-адрес изображения в переменной js или фактические двоичные данные для изображения в переменной js? –

+0

Я имею в виду адрес. – user1481563

ответ

2
$("a").on("click", function() { 
    alert ($(this).siblings("img").attr("src")); 
}); 

demo

...

UPDATE

JS только - http://jsfiddle.net/FVrTg/7/

var links = document.getElementsByTagName("a"); 
var size = links.length; 

for (var i = 0; i < size; i++) { 
    links[i].addEventListener("click", function() { 
     alert(this.previousSibling.previousSibling.getAttribute("src")); 
    }, false); 
} 
+0

+1, первый ответ с правильным кодом с помощью 'siblings()'. –

+0

@JonathanM thx :) –

+0

Ницца! Получил чистый javascript способ сделать это? – user1481563

0
$('a').click(function(e){ 
    e.preventDefault(); 
    var src = $(this).siblings('img').prop('src'); 
}) 

http://jsfiddle.net/FVrTg/5/

+0

Спасибо. Вы знаете, как это сделать, не используя jquery? – user1481563

+0

Как сохранить путь изображения в переменной JS, для которого пользователь выбрал, нажав кнопку обзора? – Faizan

0

Используйте событие делегат для click на document, для повышения эффективности, и получить parentNode для <a>. Затем возьмите <img> и получите src. С parentNode вы можете смело добавить свой дизайн без изменения кода.

Демо: http://jsfiddle.net/ThinkingStiff/NWD7f/

document.addEventListener('click', function(event) { 

    var a = event.target; 

    if(a.tagName.toLowerCase() == 'a') { 

     var src = a.parentNode.getElementsByTagName('img')[0].src; 
     console.log(src); 

    }; 

}, false);​ 
+0

Для каждого щелчка на странице? Наверное, это подход. IMO, 'document.getElementsByTagName' - это« более чистый »подход, и я все еще чувствовал себя немного озорным, предлагая это. –

+0

@ JaredFarrish Делегаты более эффективны, чем событие на каждом изображении. Как библиотеки, такие как jQuery, рекомендуют обрабатывать события (и нажимают на нее с помощью функции .on() '). – ThinkingStiff

+0

Да, но это не обязательно должно быть на ['document'] (https://developer.mozilla.org/en/DOM/element.addEventListener), не так ли? (EDIT: Хотя, я вижу, что вы говорите в смысле делегата. Это просто неприятно, я, вероятно, переберусь, что я полагаю.) –

0

Вот такой подход, который будет печатать img.src с помощью rel="img-id" связать a к img:

HTML

<div> 
    <img id="img-1" src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/26/YellowLabradorLooking_new.jpg/260px-YellowLabradorLooking_new.jpg"/> 
    <a href="#" class="img-hover" rel="img-1"></a> 
</div> 

Javascript

window.onload = function(){ 
    var links = document.getElementsByTagName('a'), 
     c_links = links.length, 
     link; 

    while (c_links--){ 
     link = links[c_links]; 

     if (link.className.indexOf('img-hover') > -1) { 
      link.onclick = function(){ 
       var img = document.getElementById(this.rel); 

       if (img) { 
        console.log(img.src); 
       } 
      }; 
     } 
    } 
}; 

http://jsfiddle.net/userdude/ecXCX/

Смежные вопросы