我正在开发一个应用程序,您可以在其中显示根特(比利时)的所有纪念碑和地点。主页上有一个全屏地图(使用 jQuery 和 Google Maps API v3 编程),在左侧,有一个可以显示的项目列表。用户可以选择是单独显示该类别,还是将其添加到他们之前单击的类别中。
这就是发生的事情:我加载页面,然后单击一个类别。一切正常。但只有当我单击同一类别中的跨度时。每当我单击另一个类别中的某些内容时,firebug 都会抛出错误:parent is null (or this.parentNode is null)
我最初尝试使用 $(this).parent().html()... 在 jQuery 中执行此操作,但它给了我一个类似的错误:'TypeError: parent.html(...) is undefined'。
这是我的代码...
HTML
<section class="category transport">
<h1>Transport</h1>
<ul class="clearfix">
<li><span class="category_li">Parkings</span></li>
<li><span class="category_li">Stations</span></li>
</ul>
</section>
JQUERY(悬停效果) 这是我将“add_on_map”跨度添加到列表项的地方
$('.category ul li').hover(
//mouse-enter
function()
{
if($(this).children('.add_on_map').length == 0)
{
$(this).append(add_marker_sign);
$('.add_on_map').click(showCategory);
}
else
{
$(this).children('.add_on_map').show();
}
},
//mouse-leave
function()
{
$(this).children('.add_on_map').hide();
}
);
JQUERY(点击事件)
function showCategory(e)
{
var parent = null;
parent = this.parentNode;
var add_marker_sign = '<span class="add_on_map plus"> +</span>';
var remove_marker_sign = '<span class="add_on_map minus"> -</span>';
var element;
var to_removed_marker_sign = parent.innerHTML.replace(add_marker_sign, remove_marker_sign);
var to_add_marker_sign = parent.innerHTML.replace(remove_marker_sign, add_marker_sign);
//User clicks span -> If you click on the word:
// All markers are deleted and the clicked category is added
//So when the clicked item doesn't have the 'add_on_map' class:
if(!$(this).hasClass('add_on_map')){
console.log('remove all markers and add new');
removeAllMarkers();
element = $(this).text().toLowerCase();
$(this).parent().html(to_removed_marker_sign);
$('.category ul li').removeClass('active_subcategory');
addMarkers(element);
$('.category ul li span').click(showCategory);
}
//When clicked item DOES have 'add_on_map' class:
else
{
element = $(this).parent().children('.category_li').text().toLowerCase();
//Check if markers should be ADDED or DELETED
if($(this).hasClass('plus')) {
console.log('add markers');
$(this).parent().html(to_removed_marker_sign);
addMarkers(element);
$('.category ul li span').click(showCategory);
}
if($(this).hasClass('minus')) {
console.log('remove markers');
$(this).parent().html(to_add_marker_sign);
removeMarkers(element);
$('.category ul li span').click(showCategory);
}
}
}
我在 jsfiddle 上做了一个小型现场演示!
如果有人可以帮助我解决这个问题,我会很感激!提前致谢。
海伦娜·S。