1

さて、これを説明するのは少し厄介かもしれません。私の関数には、対象となる要素が与えられ、innerHTML を使用して要素に表示される ID を受け取ります。その ID は、対象となる必要があるクラスの名前にも表示されます。ただし、ID には「+」、「/」、または「\」のいずれかの文字が含まれる可能性があり、jQuery が変数で ID を使用できなくなります。

編集:IDと言うとき、これは要素IDではありません。これはユーザー ID です。ページだけでなくクラス名にも表示されるため、複数の要素を対象にすることができます。

コードは次のとおりです。

function goFilt(filtID) {
    var ptbf = document.getElementById("pc" + filtID);
    var ptbfIdc = ptbf.getElementsByClassName("hand");
    var ptbfId = ptbfIdc[0].innerHTML;
    ptbf.className = 'animated hinge';
    setTimeout(function () {
        $q("#pc" + filTar).animate({
            height: "1px"
        }, 500);
    }, 1000);
    setTimeout(function () {
        $q("#pc" + filTar).css("display", "none");
    }, 1500);
    setTimeout(function () {
        $q(".id_" + ptbfId).parent().parent().parent().parent().animate({
            opacity: 0
        }, 500);
        setTimeout(function () {
            $q(".id_" + ptbfId).parent().parent().parent().parent().animate({
                height: "1px"
            }, 500);
        }, 500);
    }, 1500);
    setTimeout(function () {
        $q(".id_" + ptbfId).parent().parent().parent().parent().css("display", "none");
    }, 2500);
}

ID が VmOR+MU8 だとします。クラス名「hand」で要素をタグ付けし、内部の html を取得して、変数 ptbfId として保存します。次に、クラス id_VmOR+MU8 で要素をタグ付けする必要がありますが、ID の「+」が機能を停止するため、$q(".id_" + ptbfId) を使用できません。それが私の問題です。正規表現を使ったばかげた回避策を除いて、これを修正する方法がわかりません。その時点以降も ID を使用できるようにする必要があるため、問題のある文字を一時的な文字に交換する場合は、すばやく交換できる必要があります。

あなたたちからの助けはありますか?

編集 2: フィドルの例: http://jsfiddle.net/RpVr2/

4

1 に答える 1

1

エスケープ+/バックスラッシュ 1 つとバックスラッシュ 2 つのバックスラッシュ

于 2013-08-25T01:37:10.980 に答える