Re: Не можу добратись до елемента з тегом div та відповідним класом
Мені просто цікаво, звідки цей файл класу comment.class.php знає про існування файлу script.js і про наявність у ньому функції someFunction.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → JavaScript, TypeScript, ECMAScript → Не можу добратись до елемента з тегом div та відповідним класом
Для відправлення відповіді ви повинні увійти або зареєструватися
Мені просто цікаво, звідки цей файл класу comment.class.php знає про існування файлу script.js і про наявність у ньому функції someFunction.
Вітання всім!
Сьогодні натрапив на таку ситуацію:
Якщо я у класі повідомлення використовую атрибут "onclick", можу отримати id цього повідомлення та виконати функцію:
onclick="alert(this.id);alert(read_message());", де
function read_message(){
var read_message_id = this.id;
var author_name = document.getElementById('author').value;
alert('Повідомлення ' + read_message_id + " відмічається як прочитане, якщо ви - отримувач");
$.ajax({
url: 'read_message.php',
type: 'POST',
cache: 'false',
data: {
read_id: read_message_id,
author_name: author_name
}
});
return false;
};
Це, наприклад, видасть "50" та
"Повідомлення undefined відмічається як прочитане, якщо ви - отримувач"
Питання наступне: як передати цей id (50) у функцію read_message(), так як
var read_message_id = this.id;
не визначає id.
Очевидно:
...alert(read_message(this.id));...
...
function read_message(read_message_id){
var author_name = ...
this має сенс тільки в функції об'єкту, а не в викликаній з неї.
Дякую, шановний koala
Щось я зашився.. Не помітив очевидного. А це єдиний варіант, чи можна у
onclick="read_message(this.id);"
використати метод $.post чи $.get?
чи можна у
onclick="read_message(this.id);"
використати метод $.post чи $.get?
Це не програмерський підхід - питати такі речі. Спробуйте - дізнаєтеся. Побачите щось неочікуване - питайте.
П.С. Можна.
Наступні граблі, на які я наступив при переході сторінки на jQuery:
Для видалення повідомлення із списку повідомлень переписки, служив наступний код:
function delete_message(delete_message_id){
var commentContainer = $(this).parent();
var author_name = document.getElementById('author').value;
alert('Ви видалили повідомлення ' + delete_message_id + ' ' + author_name + ' ' + commentContainer);
$.ajax({
url: 'delete_message.php',
type: 'POST',
cache: 'false',
data: {
delete_id: delete_message_id,
author_name: author_name
},
success: function(){
commentContainer.slideUp('slow', function() {$(this).remove();});
}
});
return false;
};
Це працювало, коли повідомлення були видимі при перегляді джерела сторінки.
Тепер, коли вони генеруються завдяки jQuery, видалення без перезавантаження сторінки не відбувається. (Видалення у базі відбувається, але це повідомлення не ховається відразу без перезавантаження).
Так треба ручками приховувати елемент сторінки, а ви як думали?
Та я так і думав=) Але як це зробити?
Спочатку це працювало.
Перепрошую, неуважно подивився: ви ніби це й робите в
commentContainer.slideUp('slow', function() {$(this).remove();});
Тоді треба розбиратися...
У якості commentContainer виступає comment_list.
Але, якщо у першому випадку працювало справно видалення, коли виводжу контейнер алертом, повідомлення відображає [object Object].
Тепер повертає це ж значення, але видалення відбувається у базі, але вже не видаляється зі списку без перезавантаження сторінки
commentContainer.slideUp('slow', function() {$(this.id /*або this.className або щось інше з доп. чого можна було б вибрати елемент*/).remove();});
Для відправлення відповіді ви повинні увійти або зареєструватися