JQuery .click传递变量

时间:2010-01-15 08:22:14

标签: jquery variables click

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语句是错误的 - 我知道我只是以它们为例。任何建议? 谢谢你

4 个答案:

答案 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_1view_2,那么除了您使用=而不是比较==之外,所有内容都应该没问题。

如果您的show元素被称为show1show2,而不是showshow2,您当然可以这样做:

$('.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;
});