Доступ к ссылке в Javascript, переданной из PHP

#php #javascript #jquery #variables

#php #javascript #jquery #переменные

Вопрос:

Итак, у меня есть этот PHP-код

     </div>
    <div id="topmusicartisttitle">Top 5 Music Artist</div>
    <div class="edit"><a href="" name="topartistsedit">edit</a></div>
    <div id="topmusicartistlist">
    <ul>
    ...
  

это в основном передает список вещей, и я хочу иметь возможность щелкнуть по этой ссылке в javascript, но я не хочу, чтобы она куда-либо уходила, я просто хочу поймать щелчок и обработать его. Итак, для начала у меня есть:

    $('a[name=birthdayedit').live('click',function(e){
  e.preventDefault();
  });
  

Но, похоже, это не работает. Я проверил firebug, и там есть href и имя (очевидно), но щелчок не зарегистрирован в Javascript, и он все равно перенаправляется. Я предполагаю, что live — это функция, которую нужно использовать, поскольку это в значительной степени динамически создаваемый контент. Кто-нибудь знает, что я делаю не так?

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

1. Вы пробовали включить return false; в свой обработчик кликов?

2. В birthdayedit вашем фрагменте нет именованного поля, и вам не хватает закрытия ] в селекторе jquery.

3. $('a[name=birthdayedit') является ошибкой. Сравните с $('a[name=birthdayedit]') .

4. Если вы разместите окно. предупреждение («Щелчок»); в обработчике щелчка вы получаете предупреждение? Вы можете попробовать добавить «]», чтобы закрыть часть «a[name=]».

5. У вас отсутствует закрывающая квадратная скобка $('a[name=birthdayedit') . Кроме того, имя там не совпадает с именем в вашем HTML!

Ответ №1:

Изменить

 $('a[name=birthdayedit')
  

Для

 $('a[name=topartistsedit]')
  

или измените имя в вашем HTML.

Ответ №2:

Я вижу несколько ошибок:

  1. В закрывающей скобке (a ] ) нет a[name=birthdayedit'
  2. Атрибут name в HTML отличается от того, на который ссылается JS.

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

1. Спасибо всем, как-то я пропустил эту закрывающую скобку. С моей стороны также было глупо не публиковать СООТВЕТСТВУЮЩИЙ раздел javascript. По какой-то причине я просто выбрал один вместо правильного. Еще раз спасибо!

Ответ №3:

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

 <div class="edit"><a href="#" id="topartistsedit">edit</a></div>
  

И затем вы можете зафиксировать щелчок следующим образом:

 $("#topartistsedit").click(function() {
    // do what you want in the click function
    return(false);   // returning false stops default behavior and propagation
});
  

или если содержимое создается динамически после загрузки страницы:

 $("#topartistsedit").live("click", function() {
    // do what you want in the click function
    return(false);   // returning false stops default behavior and propagation
});
  

Пример здесь: http://jsfiddle.net/jfriend00/8FgFP /