2012-09-16 4 views
0

Вот хорошая и интересная проблема, которую я пытаюсь выяснить:Таблица манипуляция клетки изображений с JQuery

У меня есть таблица, содержащая 3 столбцов и 8 строк. Таблица генерируется через PHP, динамически. Каждый td имеет в себе кнопку с идентификатором 1,2 или 3, обозначая столбцы. Каждая кнопка имеет 3 состояния/стили - Normal, clicked и hover (все разные стили, всего 9 стилей).

До сих пор мне удалось дать каждому отдельному стандарту ячейки и стиль наведения с помощью css, и я создал сценарий jquery, чтобы изменить класс щелкнутой ячейки до его щелканного стиля. Проблема заключается в том, когда я установил стиль ячейки в одной строке, я хочу две оставшиеся ячейки в этой строке, чтобы вернуться к нормальному стилю:

левый нормальный средний щелчок правой нормальной
левой кнопкой мыши средний нормальный правый нормальный
левый нормальный средний нормальный правой кнопкой мыши
...

Но только в этой строке.

Это мой код до сих пор:

function chooseItem(){ 

var left = $('#table td button#1'); 
    var middle = $('#table td button#2'); 
var right = $('#table td button#3'); 

     left.click(function() { 
      $(this).removeClass('LeftNormal'); 
      $(this).addClass('LeftClicked');   
     }) 

     right.click(function() { 
      $(this).removeClass('RightNormal'); 
      $(this).addClass('RightClicked');   
     }) 

     midle.click(function() { 
      $(this).removeClass('MidleNormal'); 
      $(this).addClass('MidleClicked');   
     }) 
}; 

Я красный много связанных с этим вопросов здесь, но ни один не имел подобную проблему. Заранее спасибо!

+0

Можете ли вы показать простой, минимальный [SSCCE] (http://sscce.org/) [JS Fiddle] (http://jsfiddle.net/), что у вас есть до сих пор? –

+0

Я постараюсь сделать это, но это уже очень упрощенный вопрос :) Это единственное, что меня беспокоит, все приложение сложнее, поэтому я не знаю, нужно ли переписывать все это, чтобы показать вы или просто для того, чтобы дать вам ссылку на приложение ...? – gazdac

+0

Просто покажите минимальный объем кода, который у вас есть, который воспроизводит проблему, которую вы сейчас имеете, и пытаетесь решить. Я бы предположил, что это будет таблица и JavaScript, с помощью которых вы пытаетесь показать состояния/стили щелкнутых ячеек. –

ответ

1

Вы хотите что-то вроде этого?

var $table = $('table'); 
    $table.find('button').click(function() { 
    $(this).addClass('selected').parent().siblings().find('button').removeClass('selected'); 
    });​ 



Нажмите, чтобы увидеть в действии: http://jsfiddle.net/8qLpm/


+0

Я постараюсь реализовать ваше решение. Но вы используете только один класс, и мне нужен конкретный класс для каждой кнопки в одной строке. Вот почему у моих кнопок есть идентификаторы. В любом случае, спасибо вам большое, и я надеюсь, что они будут работать. – gazdac

+0

Зачем вам все 3 класса? если только для причины css вы можете обнаружить 3 типа: 1) По умолчанию, 2) Hover, 3), или есть еще одна причина использовать все 3? – AlexC

+0

Потому что я использую совершенно разные изображения. Не хотел беспокоить вас всей моей проблемой, потому что это сложно для быстрого решения. Поэтому я сделал все возможное, чтобы объяснить только ту часть, которая дает мне самую большую головную боль. – gazdac

0

Try:

function chooseItem(){ 

var left = $('#table td button1.left'); 
    var middle = $('#table td button2.middle'); 
var right = $('#table td button3.right'); 

     left.click(function() { 
      $(this).closest('tr').find('button').removeClass('LeftNormal'); 
      $(this).addClass('LeftClicked');   
     }) 

     right.click(function() { 
      $(this).closest('tr').find('button').removeClass('RightNormal'); 
      $(this).addClass('RightClicked');   
     }) 

     midle.click(function() { 
      $(this).closest('tr').find('button').removeClass('MidleNormal'); 
      $(this).addClass('MidleClicked');   
     }) 
}; 
+0

Я не уверен, что ваша модификация действительно что-то сделает. Я пытался сделать то, что вы предложили, но это просто заставило мой существующий код перестать работать. – gazdac

+0

Я изменил ваши заявления, так как я думал, что они указали, что у вас есть повторные идентификаторы. Попытайтесь изменить его, но не забывайте избегать того, чтобы два элемента имели одинаковый идентификатор, вместо этого используйте классы. Код просто удаляет класс из всех кнопок в строке, прежде чем добавлять его к нажатой кнопке. Надеюсь, это то, что вы хотите. – Kev

Смежные вопросы