$(event.target.id).attr(" class")返回undefined

时间:2017-03-16 23:30:04

标签: javascript jquery html

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

我有一个(工作)函数,在上传时将新元素附加到集合中(忽略第一位,附加结尾):

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和类:

$(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中)。所以我在这里是因为我不确定为什么会发生这种情况。

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

1 个答案:

答案 0 :(得分:2)

ID选择器以#开头。

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

或者如上面的评论中所述,只需直接在元素e.target上调用jQuery:

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