Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   как сделать выборку jquery используя переменную? (https://javascript.ru/forum/jquery/53299-kak-sdelat-vyborku-jquery-ispolzuya-peremennuyu.html)

alex162341 28.01.2015 20:51

как сделать выборку jquery используя переменную?
 
Есть такой код РНР:
echo
'<div id="imgbox" class = '.$id_img.' >
<image src="uploads/'.$number_id.'/avatar/'.$image.'"/></div>';

Переменные $id_img, $number_id, $image заполняются из базы данных и появляются картинки (пусть их например будет 5 шт)


Как написать код jquery чтобы исчезала с экрана именно кликнутая картинка? Куда в код и как вставить $id_img?

$('#imgbox').live('click', function(){
$('#imgbox').hide(500);
}

рони 28.01.2015 21:14

Цитата:

Сообщение от alex162341
image

???

$('#imgbox').on('click', 'img', function(){
 $(this).hide(500);
 })

alex162341 28.01.2015 21:43

Мне нужно обязательно через $id_img завязать

рони 28.01.2015 21:48

alex162341,
замените 'img' на '#id1, #id2' как это будет на php незнаю

alex162341 28.01.2015 21:49

Вот код подробнее

часть файла php
$images = scandir("./uploads/$number_id/avatar/");//перебирает файлы в папке
foreach ($images as $image)
{
if ($image != '.' && $image != '..') {
$result = mysql_query ("SELECT id FROM add_img WHERE actual_image_name='$image'",$db);
$myrow = mysql_fetch_array ($result);
$id_img = $myrow['id'];

echo '<div id="imgbox" class = '.$id_img.' folder='.$number_id.' alt='.$image.' ><image src="uploads/'.$number_id.'/avatar/'.$image.'"/>';
echo $id_img;


echo '<img src="delete.gif" title="Удалить картинку" ></div>';
echo '</images>';}

}


часть файла javascript


<script type="text/javascript" >
$('#imgbox').live('click', function(){
var res = confirm ("Удалить картинку?");// спрашиваем подтверждение на удаление
if(!res) return false;

var folder = $(this).attr ('folder');// получаем папку в которой лежит миниатюра и картинка
//alert (folder);
var alt = $(this).attr ('alt');// получаем имя картинки
//alert (alt);
var clas = $(this).attr('clas');// получаем имя картинки
//alert (id_img);
$.ajax ({
url: "./123.php",
type: "POST",
data: {folder: folder, alt: alt, clas: clas},
success: function(data){
// если все верно выполняем эту функцию
alert (data);
$(this).hide(500);

},

error: function(){
alert ("Ошибка AJAX"); // в случае ошибки выводим это
}


})
});
</script>

тут ajax обработчик который удаляет файлы

if ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'){
if($_POST){
unlink('./uploads/'.$_POST['folder'].'/avatar/'.$_POST['alt']);
unlink('./uploads/'.$_POST['folder'].'/foto/'.$_POST['alt']);
//print './uploads/'.$_POST['folder'].'/avatar/'.$_POST['alt'];
print $_POST['clas'];
}
else return false;
}

alex162341 28.01.2015 21:57

нельзя на #id1, #id2' менять

$id_img берется из базы данных.

$('#imgbox'.'data').hide(500); - вот если бы так. Но так не работает.

alex162341 28.01.2015 21:59

$('#imgbox'.'data').hide(500); Как вместо data переменную вставить?

рони 28.01.2015 22:04

alex162341,
увы более ничем ... и так на всякийПожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

danik.js 28.01.2015 22:54

Цитата:

Сообщение от alex162341
foreach ($images as $image)
...
echo '<div id="imgbox" class = '.$id_img.'

Мужик, ты все перепутал :) ID должны быть уникальными, а классы, наоборот, обычно делаются одинаковыми - это ведь КЛАСС.

<div id="imgbox-<?= $id_img ?>" class="imgbox">


$('.imgbox').click(...);

alex162341 29.01.2015 20:42

исправил так
echo '<div id='.$id_img.' class="imgbox" folder='.$number_id.' alt='.$image.' ><image src="uploads/'.$number_id.'/avatar/'.$image.'"/>';





но куда здесь $('.imgbox').hide(500); вставить $id_img

чтобы скрывалась именно картинка на которую кликнул, а не все картинки у которых class="imgbox" ?


Часовой пояс GMT +3, время: 20:33.