2017-03-16 72 views
1

我试图通过集合的类名来获得给定集合中的任何元素。

我有一个(工作)的功能,上载其追加新要素的集合(忽略了第一位,追加为末):

function sortMaps(returnString) { 
    returnArray = returnString.split(","); 
    imageCount = parseInt(returnArray[0]); 
    for (i = 0; i < imageCount; ++i) { 
     MapObject = { 
      id: returnArray[i+1], 
      url: returnArray[i+imageCount+1], 
      name: returnArray[i+(imageCount*2)+1], 
      coordString: returnArray[i+(imageCount*3)+1], 
      width: returnArray[i+(imageCount*4)+1], 
      height: returnArray[i+(imageCount*5)+1] 
     }; 

     mapArray[i] = MapObject; 
     $("#mapList").append("<li id=\"" + i + "dropdownMap\" class=\"dropdownMap\">" + mapArray[i].name + "</li>"); 
    } 
} 

而另一个函数,就像一个测试仪,打印出的id和class取其元素我点击:

$(document).click(function (event) { 
    console.log(event.target.id); 
    console.log($(event.target.id).attr("class")); 
}); 

的HTML到我追加的东西看起来是这样的:

<div id="mapperMenu"> 
    <div class="mapmakerDropdown"> 
     <button>Maps</button> 
     <div class="mapmakerDropdownOptions"> 
      <ul id="mapList">APPENDED ELEMENTS APPEAR HERE</ul> 
     </div> 
    </div> 
    <form action="returnMapmaker.php" method="post"> 
     <input type="submit" class="button" value="Save"> 
    <form> 
</div> 

当我点击一个附加列表元素时,ID出现并且是正确的,但该类未定义(尽管它出现在Firefox检查器中的HTML中)。所以在这里我是因为我不确定为什么会发生这种情况。

任何帮助表示赞赏!如果您需要更多信息,请告知我:)

+0

使用 '$(event.target).attr( “类”)'。如果你真的想使用id,可以使用'$('#'+ event.target.id).attr(“class”)' – Reeno

+0

@Reeno'this'是'document'! –

+0

是的,你是对的,我改变了。 – Reeno

回答

2

ID选择器以#开头。

console.log($('#' + event.target.id).attr("class")); 
//    ^^^ 

或者如上的评论中提到,只要调用jQuery的直接元素e.target上:

console.log($(event.target).attr("class")); 
+0

呃哎呀。谢谢大声笑,我可以“在11分钟内接受”... – Nienaber