JQuery .click传递变量
propb。非常简单,但不适合我。 寻找传递一个点击函数的变量来显示div a或div b基于点击的链接。我的代码是这样JQuery .click传递变量
$('.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;
});
});
但很明显的,如果陈述是错误的 - 我知道,我只是用它们作为一个例子。任何suggerstions? 感谢adavance
试...
var id = parseInt(this.id.replace('view_', ""), 10);
if(id === 1) {
$('#show').show('slow');
} else if(id === 2) {
$('#show2').show('slow');
}
1 '=' 被用于分配
2 '==' 是与类型转换比较
3 '===' 是比较而不类型转换
完美Naeem,谢谢,工程立即开箱即用。我只是在学习JQuery/java,所以对于我来说,一些lang对我来说有点奇怪作为一个PHP家伙 再次感谢 – russell 2010-01-15 08:32:06
您的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这篇文章终于揭示了为什么人们写(1 == id)而不是其他方式 – jrharshath 2010-01-15 08:29:22
很好解释,为+1 – Sara44 2012-11-22 17:27:14
如果你的链接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;
});
道格指出,问题是在有条件分配
你应该也考虑重命名你的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;
});
看起来你发现@ naeem的回答很有帮助。如果是这样,不要忘记标记为已接受。我看到你在这里是新人,所以我想确保你知道如果可能,接受你询问的每个问题的答案是多么重要。欢迎来到Stack Overflow! – 2010-01-15 08:36:00