JQuery .click передает переменные

очень простой propb., но не для меня. Смотрение на передачу переменная при щелчке функционирует для показа или отделения a или отделения 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;
  });
  }); 

Но ОЧЕВИДНО, если операторы являются неправильными - я знаю, что просто использую их в качестве примера. Какие-либо предложения? Спасибо в adavance

6
задан russell 15 January 2010 в 08:22
поделиться

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 '===' является сравнение без преобразования типа

4
ответ дан 10 December 2019 в 00:38
поделиться

Как указывало

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

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

$('.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
ответ дан 10 December 2019 в 00:38
поделиться

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

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

$('.view').click(function() {
    $('#show' + this.id.replace('view_','')).show('slow');
    $('#categories').hide('slow');
    return false;
});
0
ответ дан 10 December 2019 в 00:38
поделиться

Вы назначаете значение 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
6
ответ дан 10 December 2019 в 00:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: