我有一个搜索页面,从表单中获取用户输入,然后将该信息发送到PHP文件,该文件将cURL调用发送到外部服务器。然后,PHP文件从服务器获取返回的数组,并将一些HTML回显到原始搜索页面中的“结果”div。
我想要做的是设置它,以便当用户点击“结果”div中的某个订单项时,会出现一个模式窗口,其中包含有关单击的单个项目的更多信息。
我知道如何创建一个jQuery脚本,它将处理单个唯一链接上的点击,并通过再次查询服务器生成模态窗口(通过单独的PHP文件,使用附加信息格式化模式框并正确调整大小)。我不知道怎么做的是用动态创建的内容来处理所有这些。
这是第一个PHP文件的回声:
[删除时编辑;见下文]
它为服务器返回的数组中的每个“列表”执行此操作。
这是我在单击#modalLaunch div中的锚标签时创建模态窗口的想法(这来自我一直用来研究如何操作模态窗口及其内容的测试页面) ):
[删除时编辑,见下文]
我开始怀疑我需要完全放弃这种方法并尝试使用“onClick”策略,但我再次不知道如何在所有功能之间传递相关的信息。救命啊!
编辑:
我提出这个问题的确非常糟糕。对不起。这是我正在使用的代码的更好表示:
PHP文件:
($ data是从外部服务器中提取的数组。我删除了一堆无关的变量,所以假设它们映射到一些合理的东西。)
$data = unserialize($data);
$listings = $data["listings"];
echo "<ul id='listings_grid'>";
for($i=0;$i<$data["count"];$i++)
{
$url = "/listings/".$listing_id;
echo "<li>
<a href='' target='_blank' data-listing-id='".$listing_id."'>
<div class='listing_thumb_image_container'>
<img class='listing_thumb_image' src='".$mainPhoto."'/>
</div>
<div class='listing_thumb_content'>
<br>Rent: $".$rent."
<br>Bedrooms: ".($bedrooms_count==0 ? "Studio" : ($bedrooms_count=='0.5' ? "Convertible" : $bedrooms_count))."
<br>Listing ID: ".$listing_id."
</div>
</a>
</li>";
}
echo "</ul>";
搜索页面
(再次,大量过剩。)
<?php
<script>
$(document).ready(function(){
$.post($("#html-form").attr("action"),$("#html-form").serialize(),function(data){
$("#search_results").html(data);
});
});
$(document).ready(function(){
$("#html-form").on('change submit',function(){
$.post($("#html-form").attr("action"),$("#html-form").serialize(),function(data){
$("#search_results").html(data);
});
return false;
});
});
$(document).on('click','#search_results li',function(){
$('.modalDialog').css('display','block','opacity','1','pointer-events','auto');
var href = $(this).children('a').attr('href');
$('#openModalContent').load(href);
return false;
});
</script>
<div id="openModal" class="modalDialog">
<div>
<a href="#close" title="Close" class="close">X</a>
<div id="openModalContent"></div>
</div>
</div>
<div id="content">
<div id="search_form"><form></form></div>
<div id="search_results" style="margin:0 auto;"></div>
</div>
<?php include ('footer.php'); ?>
那么我从哪里开始呢?出于某种原因,当我插入到目前为止答案中提供的选项时,我没有看到模态框出现。它可能与CSS有关:目前,模态窗口在受到:target伪类时只会变得不透明。建议?
答案 0 :(得分:1)
如果您希望动态生成的内容能够执行某些操作,请尝试使用JQuery 1.9及更高版本:
$(document).on('click','#openModalContent li',function(){
var href = $(this).children('a').attr('href');
$('#yourModalBox').load(href).show(888);
return false;
});
答案 1 :(得分:0)
将data-listing-id属性添加到生成的HTML中的锚点:
<a href='".$url."' target='_blank' data-listing-id='".$listing_id."'>
并在点击处理程序中使用该属性,如:
$('#modalLaunch a').click(function(){
$('#openModalContent').load('/listings.php', {id:$(this).data("listing-id")});
});