2013-10-24 3 views
1

У меня есть две дивы, которые показывают содержание детали продукта внутри них, что-то вроде этого:Как получить класс div, щелкнув опцию выбора внутри этого div?

<div class="product-style-odd"> 
     <select> 

      <option value="active" onClick="changeStatus(<?php echo $productid;?>,0)">Activate</option> 
      <option value="inactive" onClick="changeStatus(<?php echo $productid;?>,1)">Deactivate</option> 

     </select> 
    </div> 

    <div class="product-style-even"> 
     <select> 

      <option value="active" onClick="changeStatus(<?php echo $productid;?>,0)">Activate</option> 
      <option value="inactive" onClick="changeStatus(<?php echo $productid;?>",1)>Deactivate</option> 

     </select> 
    </div> 

    <script> 
     function changeStatus(productid, status){ 
      //Now what I want to reference and hide that div in which changeStatus function was invoked 
     } 
    </script> 

Теперь немного объяснение выше кода. Оба этих нечетных и четных div-типа находятся внутри цикла, поэтому они повторяются в зависимости от количества итераций в цикле. Теперь, что я хочу достичь, так это то, что когда пользователь нажимает на неактивную опцию из меню выбора, этот конкретный div должен fadeOut, и я изменяю статус этого продукта через Ajax.

Я не знаю, как получить класс этого конкретного div, который был нажат. И извините за плохой отступ кода, я не очень хорошо знаком с редактором SO.

EDIT: Проблема по-прежнему не решена.

Причина в том, что структура этой страницы очень сложная. Сначала у меня есть тело, а затем div, а затем несколько div, а затем приходит div с классом product-style-even или product-style-odd. Теперь, если я положу код для выбора родительского div, он выбирает div после тела.

+0

объект может иметь несколько классов .... которые все разделены пробелами. Поэтому вам нужно будет обработать этот – Fallenreaper

ответ

1

Как насчет чего-то подобного?

$("select").change(function() { 
    var selectVal; 
    $("select option:selected").each(function() { 
     selectVal = $(this).val(); 
    }); 
    if (selectVal == 'inactive') { 
     var selectParentDiv = $(this).parents('div'); 
     selectParentDiv.fadeOut(); 
     console.log(selectParentDiv.attr('class')); 
    } 
}); 

Пример: http://jsfiddle.net/rjngr/3/

+0

, который вытаскивает все классы для объекта как 1 большую строку. Может быть, tokenize это на [пространстве], так что есть список классов? – Fallenreaper

+0

Он должен возвращать только класс div $ (this) .., на который нажимается div. –

+0

, так как div может иметь несколько классов .... он вернет строку из всех классов. – Fallenreaper

0

С JQuery:

$(this).parents('div:first').hide(); 

в теле функции changeStatus (PRODUCTID, статус)

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