我正在试图弄清楚如何删除选择了特定属性的孩子(文件名)。我有PHP在加载图像的页面上显示XML文件。如果有人在哪里点击任何图像或点击删除按钮 -
<a href=""><img src="' . $child['src'] . '" alt="gallery image" />Delete me</a>
它会知道在XML文件中找到的位置并将其删除。
这里加载并显示我的XML文件:
<?php
$xml = simplexml_load_file('myPhotos.xml');
//echo $xml->getName() . "<br />";
foreach ($xml->children() as $child)
{
echo '<img src="' . $child['src'] . '" alt="gallery image" />';
}
?>
这是我的XML结构:
<slideshow>
<image src="myPhotosResized/image1.jpg" desc="This is the 1st image!" />
<image src="myPhotosResized/image2.jpg" desc="This is the 2nd image!" />
<image src="myPhotosResized/image3.jpg" desc="This is the 3rd image!" />
<image src="myPhotosResized/image4.jpg" desc="This is the 4th image!" />
</slideshow>
答案 0 :(得分:1)
假设您要实际删除该文件(而不仅仅是从DOM中删除它),请使用Ajax或使用定位脚本的链接包装图像以删除文件:
使用Ajax:
<?
$xml = simplexml_load_file('myPhotos.xml');
//echo $xml->getName() . "<br />";
foreach ($xml->children() as $child)
{
echo '<img src="' . $child['src'] . '" alt="gallery image" onclick="deleteFile('.$child["src"].')" />';
}
?>
<script>
function deleteFile(filename) {
var t = this;
$.ajax({
url: 'deleteFile.php?filename='+filename,
type: 'post',
success: function(data) {
t.style.display = 'none';//hide the link
alert('File deleted!');
}
});
}
</script>
在你的deleteFile.php上你需要使用:
$filename = $_GET['filename'];//gets the file name from the URL
unlink($filename);//deletes the file
第二个选项:
如果您必须使用PHP保留所有内容而不使用jQuery或Ajax,则只需使用链接包装图像并将其href设置为:
echo '<a href="deleteFile.php?filename=' . $child["src"] . '"><img src="' . $child['src'] . '" alt="gallery image" /></a>';
希望这有帮助
答案 1 :(得分:0)
关键是要正确编写HTML,然后编写jQuery以实现魔术
假设您的HTML是这样的,请为您的元素命名
<img src="' . $child['src'] . '" class="deleteme" alt="gallery image" /><a href="#" class="clicktodelete">Delete me</a>
这个jQuery代码会做你想要的。将它放在文件的末尾
<script>
$('.clicktodelete').click(function () {
$(this).prev('.deleteme').hide();
});
</script>