Jquery .каждый метод

#php #jquery #each

#php #jquery #каждый

Вопрос:

изучение Jquery и интеграция с PHP — добиваюсь своего, но есть одна последняя проблема в коде, над которым я работаю.

У меня есть HTML в строке, пытаюсь извлечь html в тегах, в HTML-строке может быть несколько элементов, поэтому пытаюсь использовать каждый. Моя функция отлично работала без each, ниже приведена моя интеграция each (в настоящее время ничего не возвращает):

 <?php 
   $info = '<li><strong><a href="http://www.mysite.com/test.html" title="Some stuff">I want this text</a></strong></li><li><strong><a href="http://www.mysite.com/test2.html" title="Some stuff">I want this text too</a></strong></li>';
   $info = json_encode($info);
?>

<script type="text/javascript">
$(document).ready(function () {

    $("a", $( < ? php echo $info; ? > )).each(

    function () {
        alert($(this).html());
    });
};
  

Приведенный ниже код действительно работает, но возвращает только первый элемент в HTML:

 <?php
   $info = '<li><strong><a href="http://www.mysite.com/test.html" title="Some stuff">I want this text</a></strong></li>';
   $info = json_encode($info);
?>

<script type="text/javascript">
$(document).ready(function () {
    var output = $("a", $( < ? php echo $info; ? > )).html();
    var link = $("a", $( < ? php echo $info; ? > )).attr("href");
    alert(output);
    alert(link);
});
</script>
  

Комментарии:

1. у вас есть только один тег a, поэтому

2. На самом деле приведенный выше код вообще не возвращает никаких предупреждений, даже первого тега. Я заметил, что в моем HTML не было второго <a> (было из примера, опубликованного ранее), поэтому добавлено в мой код и post, по-прежнему без кубиков.

3. вы хотите прочитать href значение?

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

5. второй пример с href attr работает, но не получает все элементы в переменной $info, только первый…

Ответ №1:

Это описание и рабочий пример того, как использовать .each() ССЫЛКУ

Вы можете попробовать этот в качестве примера

 $("a").each(function(index){alert($(this).html()});
  

Комментарии:

1. Спасибо — да, я работал именно с этим, включая некоторые другие примеры. Я не могу понять, что я делаю не так … извините, что публикую такой простой вопрос, действительно новый для jquery (последние пару дней)

2. @user760305: вы можете попробовать этот $("a").each(function(index){alert($(this).html()});

3. Томас — используя ваш приведенный выше пример, я действительно приступил к работе. просто посмотрел, и мне чего-то не хватало }); таким образом, после реализации вашего примера исходный сбой. исправлено и теперь отлично работает. Огромное спасибо!

Ответ №2:

Ваш код не работает, потому что есть несколько проблем с синтаксисом.

Во-первых, измените

 < ? php echo $info; ? >
  

Для

 <?php echo $info; ?>
  

PHP не любит пробелы, и открывающий и закрывающий теги должны отображаться без пробелов.

Во-вторых, закройте функцию ready и тег script должным образом. Вместо

 };
  

использовать,

 });
</script>
  

Почему вы кодируете фрагмент XML с помощью JSON? Это не имеет никакого смысла вообще. Оба являются способами кодирования данных. HTML — это тоже XML, кстати. Вы можете напрямую ссылаться на $info переменную, поскольку PHP сначала обработает все на сервере.

 <?php 
   $info = '<li><strong><a href="http://www.mysite.com/test.html" title="Some stuff">I want this text</a></strong></li>';
?>
<script type="text/javascript">
$(document).ready(function() {

    $("a", $("<?php echo $info; ?>")).each(
        function () {
            alert($(this).html());
        }
    );
});
  

Или просто удалите временную переменную вообще. Затрудняет чтение, но это, по сути, то, что делает PHP.

 $("a", $("<?php echo '<li><strong><a href="http://www.mysite.com/test.html" title="Some stuff">I want this text</a></strong></li>'; ?>")).each(
  

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

 <li id="myList">
    <strong><a href="http://www.mysite.com/test.html" title="Some stuff">I want this text</a></strong>
</li>

<script type="text/javascript">
$(document).ready(function() {
    $("a", "#myList").each(function() {
        alert($(this).html());
    });
});
</script>
  

Этот последний пример полностью избавляет от PHP, но на самом деле вы все равно его не использовали.

Комментарии:

1. Без JSON HTML отображался некорректно, «они мешали и неправильно отображали javascript»…

2. опять же, я определенно новичок в этом, поэтому я открыт для предложений. удалить кодировку json, как вы думаете? дело в том, что у меня есть процедура, которая заполняет переменную $info, поэтому проще использовать var

3. Понятно, как насчет добавления HTML непосредственно на страницу, как в моем последнем примере?

4. Вместо добавления всего HTML в виде строковой переменной PHP, немного лучшим подходом является добавление HTML напрямую и использование PHP только для частей, отличных от HTML. Я создал простой пример здесь — pastium.com/view/ba2f23bbe3a0da254d68f9f72f1194d6

5. К вашему сведению, вся страница написана на PHP, это всего лишь фрагмент и только jquery на странице, вот почему PHP там