Явно что-то не так с моей функцией hide / show column

#jquery

#jquery

Вопрос:

Я добавил класс ко всем td, связанным с моей таблицей. Я создал флажок и использую следующий код, чтобы установить флажок, принять его значение, которое является просто числом, добавить это число в столбец word и поместить его в переменную. Например, у меня есть класс column3. Я использую свой код для создания имени column3, используя значение флажка. Я хочу, чтобы она скрывала этот конкретный класс. Когда я сообщаю значение col, оно выдает мне правильное имя. Однако, когда я пытаюсь выполнить код, столбец не скрывается. Я не знаю, имеет ли это какое-то отношение к тому, как jQuery считывает мой самостоятельно созданный объект. Любые предложения будут оценены. Вот код для jQuery.

 $("input:checkbox").click(function(){
    if($(this).attr('checked')){
        alert($(this).val());

        var col ='column'   $(this).val();
        col = '".'   col   '"'; 
        alert(col);
        $(col).hide();
    }
    else {
        $(col).show();
    }
  

Комментарии:

1. В качестве дополнительного комментария, если вы используете последнюю версию jQuery, я бы настоятельно рекомендовал использовать prop() вместо attr() .

2. теперь, когда я использую версию jquery 1.6, что-то

3. ха, это забавно, я только что добавил это до того, как у вас появилось это в

4. col не определено в вашей else ветке.

Ответ №1:

Попробуйте это:

 $("input:checkbox").click(function(){
    var $this = $(this),
        col = '.column'   $this.val();

    if ($this.attr('checked')){
        $(col).hide();
    }
    else {
        $(col).show();
    }
});
  

Основная проблема заключалась в том, что вы заключали имя класса в кавычки, поэтому ваш селектор выглядел бы так: $('".column3"') когда он должен был выглядеть так $('.column3') .

Кроме того, вы объявляли col внутри элемента управления «if checked» и пытались использовать его в инструкции else.

Ответ №2:

Вы пытаетесь сделать что-то подобное:

http://jsfiddle.net/jzJeb/

Вы не можете добавить значение " к переменной col . В итоге получается ‘».column1″‘ вместо просто ‘.column1’, например. Кроме того, col переменная находится вне области видимости, когда вы пытаетесь отобразить столбец.

Ответ №3:

Это та, которая работает, я думаю, у вас проблема с двойными кавычками в

 col = '".'   col   '"'; 
  

Я пробовал так, и это работает:

 $(document).ready(function(){
     $("input:checkbox").click(function(){
     var col ='.column'   $(this).attr("value");
       if($(this).attr('checked')){
            $(col).hide();
       }
       else {
            $(col).show();
       }
     });
});