JQuery .click передать переменные - PullRequest
6 голосов
/ 15 января 2010

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;
  });
  }); 

Но ЯВНО, если утверждения неверны - я знаю, что просто использую их в качестве примера. Любые предложения? Заранее спасибо

Ответы [ 4 ]

6 голосов
/ 15 января 2010

Вы присваиваете значение 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
4 голосов
/ 15 января 2010

попробуйте это ...

var id = parseInt(this.id.replace('view_', ""), 10);
if(id === 1) { 
 $('#show').show('slow'); 
} else if(id === 2 ) { 
 $('#show2').show('slow'); 
}

1 '=' используется для назначения
2 '==' - сравнение с преобразованием типов
3 '===' - это сравнение без преобразования типа

0 голосов
/ 15 января 2010

Как указал Дуг, проблема в условном присвоении

Вам также следует рассмотреть возможность переименования идентификаторов, чтобы они напрямую соответствовали идентификаторам ваших представлений, поэтому вы можете сделать это без тестовых случаев, только путем объединения строк: '

$('.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;
});
0 голосов
/ 15 января 2010

Если идентификаторы вашей ссылки view_1 и view_2, то здесь все должно быть хорошо, за исключением того факта, что вы используете = вместо сравнения ==.

Если бы ваши show элементы назывались show1 и show2, а не show и show2, вы, конечно, могли бы сделать:

$('.view').click(function() {
    $('#show' + this.id.replace('view_','')).show('slow');
    $('#categories').hide('slow');
    return false;
});
...