0

これは私を狂わせています。jQueryでIDでDOM要素を選択して削除しようとしています。私の最善の努力にもかかわらず、jQueryは私にキャッチされていないエラーを与え続けます:構文エラー、認識されない式:#li- / media / photos / KObtu.jpg

しかし、このIDは間違いなく私のDOMに存在します。そこで、私はjQueryを画像から切り取り、プレーンなol'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>

よろしくお願いします。

4

3 に答える 3

5

ドキュメントから:

名前のリテラル部分としてメタ文字(など!"#$%&'()*+,./:;<=>?@[\]^`{|}~)のいずれかを使用する場合は、2つの円記号を使用して文字をエスケープする必要があります\\

/はメタ文字なので、エスケープする必要があります。

于 2012-09-23T19:39:12.117 に答える
2

LI IDはハイフン(ダッシュ)を使用しますが、jqueryセレクターはアンダースコアを使用します

編集:あるいは、次のようなものを使用することもできます:

$(this).parents("li").remove();
于 2012-09-23T19:15:57.187 に答える
0

$( "[id ='personal-photo-list'] .delete")または$( "[id ='li- / media / photos / KObtu.jpg']")を使用してみてください。動作中のjsFiddlehttp : //jsfiddle.net/42Vyq/1/

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

天才開発者がクラス名「user.email」を使用したときに問題が発生しました

于 2012-09-23T19:54:32.130 に答える