#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');
Редактировать: Аналогично атрибуту данных, указанному другими.