7

jQueryでオーバーレイセクションを作成しました。

これは私がと呼びます<a href="javascript:slide(cms);">
しかし、私はこのエラーを受け取ります:

エラー:構文エラー、認識されない式:#[object HTMLElement] [http:// localhost // js / jquery-1.9.1.min.js:4]

何か案が?スライド方法は次のとおりです。

function slide(content) {
    $('#' + content).show(0);
    $('#' + content).animate({
        left: '0%'
    }, 500);
}
$('.c-close').click(function(){ 
    $('.slide').animate({
        left: '100%'
    }, 500);
    $('.slide').hide(0);
});
4

3 に答える 3

9

content.toString()です[object HTMLElement]content要素(またはコードの一部にある別のバグの産物)もそうです。

contentIDではなく要素であるため、。ではなく、を使用する必要があり$(content)ます$('#'+content)

于 2013-02-22T14:23:59.373 に答える
3

正しい答えは、コンテンツとcmsが何であるかによって異なります。

要素に「cms」という名前のIDがあるため、cmsを送信します

コンテンツがDOM要素識別子である場合は、Idが文字列として渡されていることを確認する必要があります。

<div id="cms" ></div>
<a href="javascript:slide('cms');">

そして、関数の名前を変更して、関数の機能をより明確にします。

function slide(element_id) {
    $('#' + element_id).show(0);
    $('#' + element_id).animate({
        left: '0%'
    }, 500);
}

他にもいくつかの解決策があります。

cmsがDOm要素を含む以前に設定された変数である場合。

例えば。

Javascript:

var cms = $('cms');

function slide(content) {
    content.show(0);
    content.animate({
        left: '0%'
    }, 500);
}

また:

var cms = document.getElementById("cms");

function slide(content) {
    $(content).show(0);
    $(content).animate({
        left: '0%'
    }, 500);
}

html:

<a href="javascript:slide(cms);">.

あなたが望むものに応じて。

@dystroyを使用する場合は、要素IDを変数として送信するだけでなく、非常に優れたソリューションであることを忘れないでください。ただし、実際には、選択後にdom要素を送信します。

私の解決策は次のとおりです。

<div id="cms"></div>
<a href="#" id="slide">slide</a>
<script>
    (function(){
        $('slide').on('click',function(e){
            e.preventDefault();
            var slideElement = $('div#cms');
            slideElement.show(0);
            slideElement.animate({
                left: '0%'
            }, 500);
        });
    })();
</script>
于 2013-02-22T14:27:24.650 に答える
0

jQueryセレクターで変数を使用するには、文字列である必要があります。
したがって、cmsを'->で囲みます<a href="javascript:slide('cms');">

于 2013-02-22T14:24:45.500 に答える