Относительный путь jQuery img / src с использованием ~

Я работаю над проектом VS2010 asp.net MVC и динамически меняю изображение/значок с помощью следующего вызова jQuery.

<div class="icon-button"><img src="~/Images/Umark_Icon.png" class="image-class" /></div>


<script>
$(document).on("click", ".iconl-button", function () {
       $(this).find('img').attr("src", "~/Images/Mark_Icon.png");
 });
</script>

ИЛИ вместо этого я также пробовал

$(this).html('<img src="~/Images/Mark_Icon.png" class="image-class"/>');

Если изображение src или все изображение заменено относительным путем на «~/image_path», оно не работает с тильдой.

Работает только с "../image_path".

Он не работает с «../../image_path», что, как я полагаю, но не уверено, связано с глубиной папки с изображениями.

Наконец, я хочу, чтобы он работал с опцией «~/», которая, по моему мнению, наиболее подходит для этого случая.

Пожалуйста, любые комментарии, предложения и демонстрации по теме были бы очень полезны для меня.

Спасибо.


person Georgi    schedule 02.01.2014    source источник
comment
Какова цель ~/? Где находится ресурс относительно вашего текущего пути?   -  person Nucleon    schedule 03.01.2014
comment
@Nucleon Если я правильно понимаю ваш вопрос, ресурс находится в ../../Images/Mark_Icon.png относительно моего текущего пути.   -  person Georgi    schedule 03.01.2014
comment
Итак, чтобы было ясно, URL-адрес, который кто-то увидит, это что-то вроде yourdomain.com/foo/bar. и изображение расположено по адресу yourdomain.com/Images/Mark_Icon.png? Относительные пути в браузере основаны на URL-адресах, а не на фактических путях к файлам. Если приведенные выше примеры URL верны, то ../../Images/Mark_Icon.png действителен и будет работать.   -  person Nucleon    schedule 03.01.2014
comment
@Nucleon да, это работает, хотя на локальном хосте путь ../../Images/Mark_Icon.png, но когда на сервере DEV он меняется на ../Images/Mark_Icon.png, и это то, что я пытаюсь решить.   -  person Georgi    schedule 03.01.2014


Ответы (2)


~/ не является допустимым URL-адресом. Пути должны быть либо абсолютными, либо относительными URL-адресами, чтобы функционировать в теге изображения. Насколько мне известно, у вас есть следующие варианты:

/foo - относительно корня хоста

foo или ./foo - относительно текущего URL

//host.com/foo или protocol://host.com/foo - абсолютный URL

http://url.spec.whatwg.org/

person Nucleon    schedule 02.01.2014

person    schedule
comment
Извините, может быть, я был недостаточно ясен, но я ищу решение jQuery и, что более важно, никаких вызовов сервера, которые приведут к ответному сообщению. Спасибо. - person Georgi; 03.01.2014
comment
спасибо за предложение, но оно почему-то не работает в моем случае. - person Georgi; 03.01.2014
comment
Что оно делает ? Какую ссылку вы получаете, когда запускаете это? - person Ani; 03.01.2014
comment
Он ломается во время выполнения где-то ...elem.setAttribute( name, value + );... в jquery-1.8.3.js и отображает следующее сообщение об ошибке htmlfile: Invalid arguments. - person Georgi; 03.01.2014
comment
Попробуйте сейчас... Обновленный ответ - person Ani; 03.01.2014
comment
Он выдает точно такое же сообщение об ошибке, и если я нажму кнопку «Продолжить» (чтобы продолжить в режиме отладки), все будет работать соответственно, но картина не изменится. - person Georgi; 03.01.2014
comment
Когда изображение не меняется, на какой URL оно указывает в это время - person Ani; 03.01.2014
comment
Именно на это он указывает.‹%=ResolveClientUrl(~/Images/Mark_Icon.png)%› - person Georgi; 03.01.2014