@LChaos

ASP.NET MVC4 + JQuery. Как исправить сброс изменений href и scr при открытии новой вкладки?

Здравствуйте.
ОС: WinServer 2008R2, проверено в разных браузерах(Опера, Хром, Мозилла)

У меня на странице есть такой код
<a href="@Model.Picture" target="blank" id="@Model.FullScreen">
                        <img src="@Model.Picture" width="400" height="320" id="@Model.PicId" />
                    </a>

В процессе работы пользователь может нажимать на ссылки, при этом изменяя значения href и src у элементов a и img. Вот как я это делаю:
$('#@Model.Event.EventID a').click(function(){
        var cam = $(this).data('ip');
        var t = parseInt($("#timeshift").val());
        $.ajax({
            type: "POST",
            url: "@Url.Action("GetPathToPicture", "Event")",
            data: { eventId: @Model.Event.EventID, timeshift: t, camIP: cam},
            success: function (data)
            {
                $('#@Model.FullScreen').attr('href',data);
                $('#@Model.PicId').attr('src', data);
            }

        });
        $('#@Model.Event.EventID a').attr('class', 'link');
        $(this).attr('class', 'link selected');
    })

И этот код работает, картинка меняется. При клике на нее в новой вкладке открывается нужная картинка, но при этом на странице значения href и src сбиваются на исходные(как при загрузке страницы).

Можно ли это как-то исправить?
  • Вопрос задан
  • 2672 просмотра
Решения вопроса 1
pushthebutton
@pushthebutton
Поведение логично.
Смотрите, у вас есть ссылка href="@Model.Picture". Кроме того на нее повешено событие click. Сначала обрабатывается событие, потом редирект по ссылке. В итоге ваша страница обновляется и в атрибут href опять попадает значение из @Model.Picture.

Самый простой выход это добавить return false в конце обработчика события.

....

 $(this).attr('class', 'link selected');
 return false;
    })
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы