Javascript 我使用的是$(此)还是.单击错误?
我试图建立一个简单的FAQ页面,当他们的问题被点击时,答案会上下滑动。当用户单击类为“question”的某物时,我希望mytarget变成“#”+[该问题的id]+“ans”,以便相应的答案向下滑动 当我只给它一个答案的ID时,toggleSlide部分工作;我不确定我的.click函数是否错误,或者我使用的$(this)是否错误,或者两者都错误Javascript 我使用的是$(此)还是.单击错误?,javascript,jquery,Javascript,Jquery,我试图建立一个简单的FAQ页面,当他们的问题被点击时,答案会上下滑动。当用户单击类为“question”的某物时,我希望mytarget变成“#”+[该问题的id]+“ans”,以便相应的答案向下滑动 当我只给它一个答案的ID时,toggleSlide部分工作;我不确定我的.click函数是否错误,或者我使用的$(this)是否错误,或者两者都错误 $(document).ready(function() { var qid = ''; var mytarget = '';
$(document).ready(function() {
var qid = '';
var mytarget = '';
function toggleSlide() {
if ($(mytarget).css('display') == 'none') {
$(mytarget).slideDown(600, 'swing');
}
else if ($(mytarget).css('display') == 'block') {
$(mytarget).slideUp(600, 'swing');
}
};
$('.answer').hide();
$('.question').click(function() {
qid = $('this').id();
mytarget = '#' + qid + 'ans';
toggleSlide();
});
});
更改为:
$('this').id();
致:
这是javascript中的关键字,而不是字符串李>
- jQuery中没有
函数,您可以使用id
.attr('id')
是DOM元素的属性。所以你可以使用这个:id
this.id
- jQuery中没有
不做:
qid=$('this').id()代码>
do:qid=$(this.attr('id')代码>不带单引号尝试以下操作:
$(function() { // shorthand for $(document).ready()...
$('.answer').hide(); // preferably div.answer if they are all <div>s
$('.question').click(function() {
// no need to check what it currently is, use slideToggle
$('#' + this.id + 'ans').slideToggle(600, 'swing');
});
});
$(function(){//$(document.ready()的缩写)。。。
$('.answer').hide();//如果它们都是s,最好是div.answer
$('.question')。单击(函数(){
//无需检查它当前的状态,请使用slideToggle
$('#'+this.id+'ans').slideToggle(600,'swing');
});
});
调用函数时,应传递参数:
qid = $(this).id();
mytarget= '#' + qid + 'ans';
toggleSlide(mytarget);
什么是$(…).id()
?没有这样的id
函数。@gdoron,你说得对。专注于这对“这”。现在显示正确的解决方案。谢谢gdoron。我不确定我是从哪里知道.id()是个东西。我写这篇文章是在一次没有互联网的汽车旅行中,在手机上做研究,一定是在没有阅读上下文的情况下学会了这个功能。@gdoron。别担心,我没有喝醉。@user1354606。读笔记。谢谢!为什么div.answer比.answer更可取?我喜欢这个。不过,div.answer实际上并不可取。jsPerf可以显示没有元素的普通类会更快。另外,我仍然喜欢使用$(document.ready(),因为任何人(我自己或其他人)在阅读代码时都会立即意识到它是document ready函数。但是那部分是个人偏好。$(this.attr('id')
=>this.id
@gdoron,=>是否意味着等于或大于
,或者它是否意味着应该转换为
PHehe@XyanEwing. 这意味着执行的时间比…:)要长
$(function() { // shorthand for $(document).ready()...
$('.answer').hide(); // preferably div.answer if they are all <div>s
$('.question').click(function() {
// no need to check what it currently is, use slideToggle
$('#' + this.id + 'ans').slideToggle(600, 'swing');
});
});
function toggleSlide(mytarget) {
if ($(mytarget).css('display')=='none'){
$(mytarget).slideDown(600, 'swing');}
else if ($(mytarget).css('display')=='block'){
$(mytarget).slideUp(600, 'swing');}
});
qid = $(this).id();
mytarget= '#' + qid + 'ans';
toggleSlide(mytarget);