如何判断要显示哪个JQUERY弹出框
最后通过一个疯狂的猴子算出它,但忘记了SQL查询的$ eventDate变量的引号。感谢您的帮助球员:)如何判断要显示哪个JQUERY弹出框
$(".date_has_event").live("click",function(){
console.log('you clicked', this);
var dateClicked = $(this).attr('id');
$.ajax({
type:"GET",
url: "popup_events.php",
data:"date="+dateClicked,
success: function(data){
$(".popupContent").html(data);
}});
//centering with css
centerPopup();
//load popup
loadPopup();
});
这一点与我的popup_events.php文件:“这是可能的”
<?php
include ("Includes/dbConnect.php");
$eventDate = $_GET['date'];
$query = "SELECT * FROM events WHERE eventDate='$eventDate'";
$check = mysqli_query($cxn,$query) or die("Couldn't execute query!");
while($row = mysqli_fetch_array($check))
{
$id = $row['eventID'];
echo "<div class='submit_event_list'><a href='individual_event_page_main.php?id=$id'>";
echo $row['eventName'];
echo " | " . $row['host'];
echo " | " . $row['venue'];
echo " | " . $row['eventDate'];
echo "</a></div>";
echo "<br />";
}
?>
我不知道你实际上有一个问题... 但好像你可能只需要对如何判断弹出显示一些帮助。
在:
$(".popup").live("click",function(){})
,你可以使用特殊的“这个”变量来确定你一天的的被点击。
例如。
$(".popup").live("click",function(){
console.log('you clicked', this);
//to get the date id (your formatdate) from this
var dateClicked = $(this).parent().parent().attr('id');
//have to do parent() twice because you put your .popup under <div class='title'>
})
为了使它更容易..你应该考虑改变你的点击事件使用.date_has_event而不是。弹出所以你可以这样做,而不是:
$(".date_has_event").live("click",function(){
var dateClicked = $(this).attr('id');
})
一旦你知道你点击了哪个一天,你可能想使当天的弹出窗口的内容在弹出窗口(当天的活动列表)。
这就是你应该使用ajax请求发送到一些后端代码,这基本上是你已经推到你的(在你的#popupContact下的东西)后面的PHP代码。 您应该将该代码移出某个地方..例如说“getEvents.php”
例如,
$(".date_has_event").live("click",function(){
var dateClicked = $(this).attr('id');
$.ajax({
type: "GET",
url: "getEvents.php",
dataType: "json",
data: "date="+dateClicked,
success: function(data){
//fill your popup with the data received
}
})
})
我认为这应该足以让你在路上。 祝你好运。
如果问题是答案是肯定的。当然,您可以将事件绑定到HTML,并显示一个弹出窗口。人们一直这样做,所以这不是一个真正有价值的问题!
更广泛的问题是“我是否以良好的方式做这件事?”是一个更难以回答的问题,也延伸了一个“适当的”堆栈溢出问题的局限性,这个问题应该比这个更集中。
我说“拥有它!”安全地知道你可以添加弹出窗口。当你有更具体的问题时再回来。当你开始时我会考虑的事情:
JavaScript是动态生成日历的最佳方式吗?你是否使用服务器端语言?这可能是更好的地方。如果你使用JS,为什么不完全建立日历,然后返回并填充它?
你需要让你的ajax调用同步吗?有没有办法设计它,以便它能够愉快地获取新信息,而不用担心它是否按顺序返回? (提示,这可能涉及到#1)
信息moreo提示:
live()
是一个不推荐使用的函数。从jQuery 1.7开始,我会考虑使用.on()
来代替。有一个.live()
使用.on()
,但我认为你不应该使用它......你应该使用相当于.delegate()
,因为你应该有一个你的日历的祖先可以作为一个监听器(而不是整个文档!)。 。如果您使用的是jQuery 1.5.x或1.6.x,则使用.delegate()
。如果你看过UI框架已经包括日历和弹出窗口(他们不包括事件管理,所以你仍然有一些有趣的工作要做)?????????????????????????????????
谢谢猴子认为这将是一个很大的帮助,只是一个问题。如何将结果转换成JSON,然后将JSON数组转换回HTML以插入DIV? – rudawg 2012-03-26 11:19:45
你不必为你的ajax请求使用“json”。它可以返回直接的HTML(这应该会更容易)。 只需将$ .ajax()请求的数据类型更改为“html”,然后在您的成功函数(数据)中,'数据'将只是您的直接HTML代码..所以您可以只做$('#popup') .html(data) 否则..你必须通过json对象并将它们转换为html。所以你的成功函数应该是这样的: for(var i in data){html + ='