我使用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);
});
答案 0 :(得分:7)
content.toString()
是[object HTMLElement]
。所以content
是一个元素(或者我们没有看到的代码部分中另一个bug的产物)。
由于content
是一个元素,而不是其ID,您应该使用$(content)
,而不是$('#'+content)
。
答案 1 :(得分:3)
正确的答案取决于什么内容和cms。
您发送cms是因为您的元素的ID为“cms”
如果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);
}
OR:
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>
答案 2 :(得分:0)
要在jQuery选择器中使用变量,它应该是一个字符串
所以用< - >&gt;围绕 cms 。 <a href="javascript:slide('cms');">