JavaScript не будет разбирать php HTML-теги - PullRequest
1 голос
/ 11 сентября 2009

php отправляет html-строки в html через ajax, обернутый в теги <p class="select"></p>, css отлично читает класс. javascript / jquery нет. javascript / jquery даже не анализирует <p onclick="function()"></p>. Что я делаю не так?

вот мой php (отправляет данные через ajax штрафа) * ​​1006 *

echo "<p class='select' onclick='populate();' >{$row['song_name']} </p>";

вот мой css (работает нормально)

p.select{color:#fff;padding: 5px;margin:0}
p.select:hover{color:#fff;background:#f60;cursor:pointer;}

вот мой javascript Метод 1 JQuery.

$("p .select").click(function(){
        var str = $(this).val();
        alert(str);
  });

метод 2, функция onclick.

function populate()
{

alert('here')
}

ни один из двух методов не отвечает вообще. Гуру, почему это?

Ответы [ 3 ]

1 голос
/ 11 сентября 2009

Две вещи:

  • p .select выберет <p> теги , содержащие элемент с выбором класса. p.select выбирает <p class="select">.
  • Почему бы не переместить функцию populate в режим live? Я подозреваю, что jquery live (или click) удаляет любые явные обработчики.

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

$("p.select").live("click",function()
{
    var str = $(this).text();
    alert(str);
    populate();
});
1 голос
/ 11 сентября 2009
$("p .select").live ( "click" , function(){
        var str = $(this).text();
        alert(str);
  });

См

События / живая

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

0 голосов
/ 11 сентября 2009

Ниже я опубликовал рабочий (в Firefox) пример. Я думаю, что вы забыли поместить метод jquery в событие onload. Рядом с другими (маленькими) ошибками ...

<html>
   <head>
      <style>
         p.select{color:#fff;padding: 5px;margin:0}
         p.select:hover{color:#fff;background:#f60;cursor:pointer;}
      </style>      
      <script src="jquery-1.3.2.min(2).js" type="text/javascript"></script>
      <script type="text/javascript">         
         function bodyOnLoad() {
            //instead of "p .select" "p.select"
            $("p.select").click(
               function(){
                  //changed val() into text()
                  var str = $(this).text();
                  alert(str);
               }); 
         }
      </script>         
   </head>
   <body onload="bodyOnLoad()">
      <p class='select'>Songname</p>
   </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...