Попытка добавить путь ссылки / ссылки в исходный код - PullRequest
2 голосов
/ 20 мая 2011

Я загружаю контент с другой страницы моего сайта в контейнер результатов (класс div).

    $('.result-container').load('../path/otherpage.html #ID');

Пока все хорошо, это работает. Теперь мне нужно обновить любую ссылку в контейнере результатов при ее нажатии. Причина в том, что все ссылки по-прежнему указывают на их исходное местоположение (откуда они были загружены).

Идея в том, что при нажатии на ссылку я получаю атрибут href. Если он начинается с «files /», то это ссылка относительно исходной страницы (если он начинается с чего-то другого, это ссылка куда-то еще, и это нормально). Итак, мне нужно добавить в начало (только что щелкнув) href "../path/", чтобы окончательный путь href выглядел как "../ path / files / etc ....". У меня есть кое-что, но я действительно изо всех сил пытаюсь собрать все воедино. Спасибо! M.

    $(function() {
    $(".result-container").live("click",   //on click on element
                     function() {
                     $.get($(this).attr("href"), //get the href attribute                                              
                              if ($('a[href^="files/"]'))   //if attribute starts with "files/"
                                 {function() {
                                 var href = $(this).attr('href'); //get the attribute content - guess I could have done that above?
                                 $(this).attr('href', '../start/path/' + href); //append the start path to original path
                                             };
                                 }
                           )};
                           )};

Отлично, спасибо !!!!! Сейчас я загружаю элемент с другой страницы моего сайта с:

$('.result-container').load(../path/conetent.html #unique-ID); //load conent from different page on my site

при клике он меняет каждый элемент, начинающийся с «files /» на «../path/files/":

»
  $(function() {
    $(".result-container").live("click",
                     function() {
                        $('.result-container').html();
                        var test = $('.result-container').html().replace(/"files\//gi, '"../path/files/');
                        $('.result-container').html(test);                       
                           }); }); 

Это работает. Это изменяет исходное содержимое и отображает измененное содержимое после активного щелчка в .result-контейнере. Теперь я пытаюсь удалить .live («клик», триггер здесь. (Этот триггер только там, потому что мой первоначальный подход к достижению этого был другим). Но когда я удаляю «клик», этот скрипт не меняет текст автоматически ... Есть идеи о том, как это выполняется и отображает измененный контент после того, как я загружаю контент из контейнера уникального идентификатора?

1 Ответ

1 голос
/ 20 мая 2011

Как насчет просто заменить любой экземпляр строки "files / with" / path /. Так что-то вроде

var new_text = $('#my_div').html().replace(/"files\//gi, '"/path/');
$('#my_div').html(new_text);

Вы должны простить меня, если мое регулярное выражение немного не в порядке, но это должно дать вам представление.

...