getElementByID工作,但jQuery的选择器不工作

时间:2012-09-23 19:13:34

标签: javascript jquery

这让我疯了。我试图在jQuery中通过ID选择一个DOM元素并将其删除。尽管我付出了最大的努力,jQuery仍然给我一个未捕获的错误:语法错误,无法识别的表达式:#li- / media / photos / KObtu.jpg

但是这个id肯定存在于我的DOM中。所以我决定从图片中删除jQuery并使用普通的'javascript。这很好用,但我不明白为什么。

function DeletePhoto() {
    //Remove a photo from the server when the delete button is clicked
    $("#personal-photo-list .delete").click( function() {
        var photoId = $(this).attr("id").split("-")[1];
        $.post("profile/DeletePhoto/", { "photo": photoId }, function(jsonObject){
            $("#li-" + photoId).remove(); //What I actually want to call. Does not work
            $("#li-/media/photos/KObtu.jpg").remove(); //I thought maybe using a variable was throwing things off.  This does not work either
            document.getElementById("li-/media/photos/KObtu.jpg").innerHTML="dsfsdfsdfsdf"; //The exact same id as the statements above. This command successfully replaces the text in the <li> tag
    });
});

}

如果有人好奇,这里是HTML的片段:

<li id="li-/media/photos/KObtu.jpg">
                <img src="/media/photos/KObtu.jpg"> 
                <p> Uploaded on Sept. 23, 2012 | <a href="javascript:void(0)" id="a-/media/photos/KObtu.jpg" class="delete"> Delete </a> </p>
</li>

提前非常感谢你。

3 个答案:

答案 0 :(得分:5)

来自documentation

  

如果您希望使用任何元字符(例如!"#$%&'()*+,./:;<=>?@[\]^`{|}~)作为名称的文字部分,则必须使用两个反斜杠转义字符:\\

/是一个元字符,所以你必须逃避它。

答案 1 :(得分:2)

您的LI id使用连字符(破折号),但您的jquery选择器使用下划线

编辑:或者,您可以使用以下内容:

$(this).parents("li").remove();

答案 2 :(得分:0)

尝试使用$(“[id ='personal-photo-list']。delete”)或$(“[id ='li- / media / photos / KObtu.jpg']”)。 工作jsFiddle http://jsfiddle.net/42Vyq/1/

jQuery API: http://api.jquery.com/attribute-equals-selector/

当天才开发人员使用类名'user.email'

时,我遇到了一些问题