所以,基本上我有这个选择/下拉菜单,我使用AJAX来检索和创建,但是当选择了一个选项时(所以onChange)我希望它重定向!
虽然,这仍然无法正常工作,但我在尝试时不会抛出任何错误,并尝试执行alert()调试方法,但警报不会被调用。
jquery的
$("#schoolMenu").change(function() {
option = $("#schoolMenu option:selected").text();
alert(option);
if(option != "- Please Select -") {
window.location = "http://www.itmustbecollege.com/pics/pics-from-"+$("#schoolMenu option:selected").val();
}
});
这是用来调用AJAX的东西
// //填充学校 //
$("#state").change(function() {
option = $("#state option:selected").text();
if($(this).attr("class") == "menu") {
if(option != "- Please Select -") {
$.ajax({
type: "GET",
url: "/includes/functions.php",
data: "f=school&p="+option+"&m=yes",
success: function(msg) {
$("#fSchool").html("<p style=\"margin-left: 20px;\">Select School:</p>"+ msg);
$("#fSchool").show();
$("#school").focus();
}
});
}
else {
$("#fSchool").html("");
$("#fSchool").hide();
}
}
else {
if(option != "- Please Select -") {
$.ajax({
type: "GET",
url: "/includes/functions.php",
data: "f=school&p="+option,
success: function(msg) {
$("#fSchool").html(msg);
$("#fSchool").show();
$("#school").focus();
}
});
}
else {
$("#fSchool").html("");
$("#fSchool").hide();
}
}
});
如果你在那个栏上看http://www.itmustbecollege.com/quotes/,你可以做到“排序”最新|类别|校
如果您将鼠标悬停在学校上方,则会显示一个下拉列表,选择任何国家/地区,然后会显示另一个国家/地区,但是如果更改了该项目,则不会发生任
这是第二次下拉的PHP
// Get College List
function getCollege($state, $m = "no", $l = "no") {
// Displays Schools
if($m == "yes") {
$options = '<select id="schoolMenu" name="school"><option value="select" selected="selected">- Please Select -</option>';
}
else if($l == "yes" || $l == "yes2") {
$options = '';
}
else {
$options = '<select name="school"><option value="select" selected="selected">- Please Select -</option>';
}
$listArray = split("\|\\\\", $list);
for($i=0; $i < count($listArray); $i++) {
if($m == "yes") {
$options .= '<option value="'. trim(titleReplace($listArray[$i])) .'">'. trim($listArray[$i]) .'</option>';
}
else if($l == "yes") {
$options .= '<li><a href="/quotes/quotes-from-'. titleReplace($listArray[$i]) .'" title="'. trim($listArray[$i]) .' Quotes">'. trim($listArray[$i]) .'</a></li>';
}
else if($l == "yes2") {
$options .= '<li><a href="/pics/pics-from-'. titleReplace($listArray[$i]) .'" title="'. trim($listArray[$i]) .' Pictures">'. trim($listArray[$i]) .'</a></li>';
}
else {
$options .= '<option value="'. trim($listArray[$i]) .'">'. trim($listArray[$i]) .'</option>';
}
}
echo $options .='</select>';
return false;
}
任何帮助都会很棒!
编辑:此外,我对菜单的下降方式有点奇怪,当你将鼠标悬停在任何其他“排序依据”链接上时,它们会消失,这是“按学校排序”的问题,因为第一个选择框显示列表,如果你去选择一所学校然后以某种方式漂浮在另一个链接上,它会消失,有关如何延迟或修复那个小问题的任何帮助吗?答案 0 :(得分:1)
这是因为页面加载时#schoolMenu
元素不存在,因此不会分配.change()
处理程序。
您可以在到达时进行分配。
var fSchool = $("#fSchool").html("<p style=\"margin-left: 20px;\">Select School:</p>"+ msg);
fSchool.find("#schoolMenu").change(function() {
option = $(this).find("option:selected").text();
alert(option);
if(option != "- Please Select -") {
window.location = "http://www.itmustbecollege.com/pics/pics-from-"+$("#schoolMenu option:selected").val();
}
});
fSchool.show();
请注意,我在$("#fSchool")
变量中缓存了fSchool
,而不是从DOM中重复选择它。
在.change()
处理程序中,我使用this
而不是"#schoolMenu"
引用接收事件的元素,以避免重复选择DOM。