7

我用 jQuery 做了一个 Overlay 部分。

我打电话给<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一个元素(或我们看不到的代码部分中另一个错误的产物)也是如此。

作为content一个元素,而不是它的 id,你应该使用$(content),而不是$('#'+content)

于 2013-02-22T14:23:59.373 回答
3

正确答案取决于内容和 cms 是什么。

您发送 cms 是因为您的元素有一个名为“cms”的 id

如果 content 是一个 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 回答