Jquery div выбирается по идентификатору, выбирается значение класса

#php #jquery

#php #jquery

Вопрос:

как мне это сделать? моя структура html выглядит следующим образом РЕДАКТИРОВАТЬ: я обновил до html, чтобы он соответствовал правилам.

 <td id="1" class="LinkWrap"><a href="" class="link">link</a></td>
  

я использую этот код:

 $(".link").click(function() {
$(this).parent();
//some ajax code
});
  

Чтобы выбрать td по идентификатору LinkWrap, но мне нужно значение класса,
значение класса извлекается php amp; amp; mysql и является идентификатором элемента, который я извлек. поэтому значение не является константой, и я не могу просто сказать, что выбрал класс со значением 1, это может быть 2 или 5932.

мне нужно это значение для моего ajax-скрипта, чтобы я мог вставлять, когда пользователь нажимает на эту ссылку. если есть лучший метод, пожалуйста, дайте мне знать 🙂

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

1. Итак, вы используете ID как классы, а class — как идентификаторы? Я хотел бы знать логику использования класса для идентификации одного элемента, в то время как вы не упоминаете, как меняются ваши идентификаторы.

2. хм.. может быть, я написал что-то не так… ну, я отредактировал свой скрипт с исходного на то, что я сохраняю данные внутри идентификатора вместо класса ex: <td id=»1″ class=»LinkWrap»> я делаю это, потому что я хочу вставить его в базу данных, когда пользователь нажимает на ссылку, и я хочу точно знать, где пользователь нажал на ссылку 🙂

Ответ №1:

Помимо того факта, что не рекомендуется начинать имена классов с числа. Используйте attr, чтобы получить атрибут класса.

 $(".link").click(function() {
   alert( $(this).parent().attr('class') ); 
});
  

Редактировать: вам лучше использовать атрибут data, как указано и другими.

HTML

  <td data-rowid="1" class="LinkWrap"><a href="" class="link">link</a></td> 
  

Javascript

 $(".link").click(function() {
   alert( $(this).parent().data('rowid') ); 
});
  

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

1. Спасибо! кстати, могу ли я написать create another data-rowid? итак, у меня были data-rowid и data-rowuser ??

Ответ №2:

Похоже, вы делаете хранение данных в class атрибуте. Классы не могут начинаться с цифры, и это означает, что ваше неправильное использование может привести к сбоям в некоторых браузерах. Вместо этого вам было бы лучше использовать jQuery data() в сочетании с data-* атрибутами.

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

1. я решил вместо этого поместить данные в идентификатор, но как это работает? id хотел бы знать лучший способ, чем хранить данные в идентификаторе 🙂

2. Идентификаторы также не могут начинаться с числа.

Ответ №3:

Interstellar_Coder и wilbbe01 оба верны при выполнении, но в вашем коде есть одна вещь, которая вас зацепит. У td есть идентификатор, который при повторении может вызвать проблемы со ссылками. атрибуты идентификатора должны быть уникальными для экземпляра DOM с риском очень непредсказуемых результатов в разных браузерах.

помимо этого, решение ceejayoz является лучшим.

Ответ №4:

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

 $('.link').click(function(e){
   var the_id = $(this).closest('td').attr('id');  //or parent().
   $.ajax({
       url: 'http://www.mysite.com/index.php?page_id=' the_id,
       success:function(response){
         alert(response);
       }
   });
  e.preventDefault();
});
  

И в вашем html:

 <td class="LinkWrap" id="td_1"><a href="" class="link">link</a></td>
  

И в вашем php:

 $id = $_GET['page_id'];
$id = str_replace('td_','',$id);
echo $id;
  

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

1. спасибо 🙂 практически тот же код jquery, который я разобрал. спасибо за дополнительный php, об этом не подумал 🙁 все остальные коды также работали, спасибо!

Ответ №5:

Я думаю, что вам понадобится следующее.

 $(this).parent().attr('class');
  

Редактировать: Аналогично атрибуту данных, указанному другими.