所以,我有下拉垂直菜单,其中包含类别和子类别。它已正确填充但我点击并选择一些子类别时遇到问题。它不会发生任何事情。只是下拉列表已关闭,并且未加载新页面。 这是cat.php
function category_list($category_parent_id = 0)
{
// build our category list only once
static $cats;
if (!is_array($cats)) {
$sql = 'SELECT * FROM cat';
$res = mysql_query($sql);
$cats = array();
while ($cat = mysql_fetch_assoc($res)) {
$cats[] = $cat;
}
}
// populate a list items array
$list_items = array();
foreach($cats as $cat) {
// if not a match, move on
if (( int )$cat['parentid'] !== ( int )$category_parent_id) {
continue;
}
// open the list item
$list_items[] = '<li>';
// construct the category link
$list_items[] = '<a href="product.php?id=' . $cat['id'] . '">';
$list_items[] = $cat['name'];
$list_items[] = '</a>';
// recurse into the child list
$list_items[] = category_list($cat['id']);
// close the list item
$list_items[] = '</li>';
}
// convert to a string
$list_items = implode('', $list_items);
// if empty, no list items!
if ('' == trim($list_items)) {
return '';
}
// ...otherwise, return the list
return '<ul id="nav-cat">' . $list_items . '</ul>';
}
这是下拉列表
$(document).ready(function () {
$('#nav-cat > li > a').click(function (e) {
$('#nav-cat li ul').slideUp();
if ($(this).attr('class') != 'active') {
$('#nav-cat li a').removeClass('active');
$(this).next().slideToggle();
$(this).addClass('active');
} else {
$('#nav-cat li a').removeClass('active');
}
e.preventDefault();
});
});
当我点击链接$list_items[] = '<a href="product.php?id=' . $cat['id'] . '">';
时,没有任何事情发生。
以下是我传递product.php
id
的方法。我知道有点乱......
if(isset($_GET['id']) && is_numeric($_GET['id'])){
$id = $_GET['id'];
$query = "SELECT * FROM products WHERE cat = '" . $_GET['id']."'";
$result = mysqli_query($con, $query) or die("Query failed: " . mysqli_errno($con));
$line = mysqli_fetch_array($result, MYSQL_BOTH);
if (!$line) echo '';
$previd = -1;
$currid = $line[0];
if (isset($_GET['id']) && is_numeric($_GET['id'])) {
$previous_ids = array();
do {
$previous_ids[] = $line[0];
$currid = $line[0];
if ($currid == (int)$_GET['id']) break;
$previd = end($previous_ids);
$line = mysqli_fetch_array($result, MYSQL_BOTH);
} while ($line);
}
if ($line) {
...
我真的不知道问题出在哪里。有任何想法吗?如果需要,我可以发布更多代码。
答案 0 :(得分:1)
如上所述on the JQuery API for preventDefault,它说&#34;点击主播不会将浏览器带到新的网址&#34;。如果您在不刷新/离开页面的情况下尝试加载内容,请考虑使用AJAX。
旁注:你的递归php函数创建了很多具有相同id的<ul>
。请考虑使用类。