Как изменить объем текста, который вложенный тег <a>охватывает с помощью jQuery? - PullRequest
0 голосов
/ 30 ноября 2009

То, что я пытаюсь сделать, это взять абзац, содержащий ссылку, например ::

<p>this is a <a href="#">link</a> to something</p>

... и измените его с помощью jQuery, чтобы ссылка содержала все текст абзаца, например ::

<p><a href="#">this is a link to something</a></p>

Кажется, я не могу разобраться с этим во время.

Cheers, Джеймс

Ответы [ 5 ]

1 голос
/ 30 ноября 2009

Попробуйте это:

        $(function() {
            var link = $("<a href='#'></a>");
            var text = $("p a").parent().text();            

            $("p").replaceWith($(link).append(text));
        });
1 голос
/ 30 ноября 2009
$("p > a").each(function(el) {
  var parent = $(this).parent();
  var text = parent.text();

  parent.replaceWith("<a href="+$(this).attr('href')+">"+text+"</a>");
});

Для этого нужно пройти через все ваши теги привязки внутри абзацев, получить только текстовую часть и заменить абзацы ( parent var) новым тегом привязки, содержащим тот же атрибут href и извлеченный текст.

1 голос
/ 30 ноября 2009

Использование text().
В вашем конкретном случае:

$('p').each(
  function()
  {
     var $this = $(this);  //more than 1 reference, I store it in a variable
     var address = $this.find('a').attr('href');
     //$this.text() includes children elements' text
     $this.html('<a href="' + address + '">' + $this.text() + '</a>');
  }
);
1 голос
/ 30 ноября 2009

Вы должны быть в состоянии выбрать параграф и якорь. Так что, может быть, если бы у них были идентификаторы, которые помогли бы.

 <p id="p">this is a <a id="a" href="http://www.google.com">link</a> to something</p>

Тогда:

 var orig = $("#p").text();

var a = $('#a').text(orig);
$("#p").empty("");
$("#p").html(a);
1 голос
/ 30 ноября 2009

Удалите все из p, используя «empty», а затем «добавьте» href к p.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...