已解决- 请参阅下面的答案
我有一个要显示列表的页面parentCategories
。当用户选择一个parentCategory
列表时categories
出现(或子类别)。然后,我希望用户能够单击 acategory
并显示一个列表products
。
我已经使用此处category
讨论的内容在其自己的页面上制作了该products
功能。
我还可以制作一个parentCategories
可点击列表以显示categories
(或子类别)列表。
当我试图让列表products
出现在列表出现之后时,问题categories
就出现了。
我正在尝试使用以下代码:
<script type="text/javascript">
$(document).ready(function () {
function getCategories(e) {
e.preventDefault();
e.stopPropagation();
var $parentCategory = $(this).closest(".parentCategory");
var parentCategoryName = $parentCategory.attr("id");
$('.divResult', $parentCategory).load("@Url.Action("CategoryList", "Product")", {
parentCategory: parentCategoryName
});
}
$(".parentCategory").on("click", "a", getCategories);
function getProducts(f) {
f.preventDefault();
f.stopPropagation();
var $category = $(this).closest(".category");
var categoryName = $category.attr("id");
$('.divResult', $category).load("@Url.Action("ProductList", "Product")", {
category: categoryName
});
}
$(".category").on("click", "a", getProducts);
});
</script>
我知道它几乎以相同的方式重复自己,但我试图在我清理它之前让它工作。我认为它应该工作的方式是当用户单击parentCategory
链接时,它位于 div 类中,parentCategory
因此函数getCategories
会触发。这会在parentCategory
包含类的 div 的父 div 中生成一些 div category
- 我认为因为我使用:
$(function() {
$(".category").on("click", "a", getProducts);
});
当我单击category
该函数的 div 内的链接时,getProducts
应该会触发,但不会触发。而是getCategories
再次触发(我可以说是因为触发Debug.Write()
的动作中的一个getCategories
。
categories
出现后parentCategories
,我的页面形状如下:
<div class="parentCategory" id="1">
. . .
<div class="result">
<div class="category" id="1">
. . .
<div class="result">
*This is where Products would be listed
</div>
</div>
<div class="category" id="2">
. . .
<div class="result">
*This is where Products would be listed
</div>
</div>
</div>
. . .
</div>
<div class="parentCategory" id="2">
. . .
<div class="result">
. . .
</div>
</div>
我需要做什么才能在单击category
类 div中的链接时getProducts
激活我的功能而不是getCategories
?
更新
我已经用category
div 之外的parentCategory
div 测试了我的代码,一切都按预期工作。问题似乎完全在于我的category
div 位于parentCategory
div 内,并且:
$(".parentCategory").on("click", "a", getCategories);
似乎覆盖了以下用途:
$(".category").on("click", "a", getProducts);
我显然需要重组一些东西——我只是不知道是什么。