PROPB。很简单,但不适合我。 希望在单击函数上传递变量,以根据单击的链接显示div a或div b。我的代码是这样的
$('.view').click(function() {
var id = this.id.replace('view_', "");
if(id=1) { $('#show').show('slow'); }
if(id=2 ) { $('#show2').show('slow'); }
$('#categories').hide('slow');
return false;
});
});
但显然if语句是错误的 - 我知道我只是以它们为例。任何建议? 谢谢你
答案 0 :(得分:6)
您要将1
的值分配给id
,而不是测试匹配项:
if(id = 1) {} // WRONG: this means if id is successfully SET to 1
以下是它的样子:
$('.view').click(function() {
var id = this.id.replace('view_', "");
if(id == 1) { $('#show').show('slow'); }
else if(id == 2 ) { $('#show2').show('slow'); }
$('#categories').hide('slow');
return false;
});
如果你发现自己犯了很多错误,你应该改变测试:
if( 1 == id) {} // Works
if( 1 = id ) {} // Throws JS error instead of failing silently
答案 1 :(得分:4)
试试这个......
var id = parseInt(this.id.replace('view_', ""), 10);
if(id === 1) {
$('#show').show('slow');
} else if(id === 2 ) {
$('#show2').show('slow');
}
1'='用于分配
2'=='是与类型转换的比较
3'==='是比较没有类型转换
答案 2 :(得分:0)
如果您的链接ID是view_1
和view_2
,那么除了您使用=
而不是比较==
之外,所有内容都应该没问题。
如果您的show
元素被称为show1
和show2
,而不是show
和show2
,您当然可以这样做:
$('.view').click(function() {
$('#show' + this.id.replace('view_','')).show('slow');
$('#categories').hide('slow');
return false;
});
答案 3 :(得分:0)
Doug指出,问题在于条件赋值
您还应该考虑重命名您的ID以直接匹配您的视图ID,因此您可以在没有测试用例的情况下执行此操作,只需通过字符串连接:'
$('.view').click(function() {
var id = this.id.replace('view_', "");
$('#show' + id).show('slow'); // doesn't have to use if statements
$('#categories').hide('slow');
return false;
});