2012-10-31 3 views
1

Я искал такой вопрос, но я не могу его найти.Скрыть div без указания идентификатора или класса

У меня есть структура, которая выглядит следующим образом:

<div id="[email protected](item.ProductId)" class="productholder"> 
    <img src="@Html.DisplayFor(modelItem => item.Image)" alt="" /> 
    <div class="productinfo"> 
    <h2>@Html.DisplayFor(modelItem => item.Name)</h2> 
    <p>@Html.DisplayFor(modelItem=> item.Description)</p> 
    <br /> 
    </div> 
    <div class="productprice">  
    <h2>@Html.DisplayFor(modelItem => item.price):-</h2>   
    <input type="button" value="Ta bort" class="b" data-ProductImageId='@item.ProductImageId'>       
    </div>         
</div> 

То, что я хочу сделать то, что когда кто-то нажать на кнопку, которая имеет class="b" весь DIV тег должен получить скрытый с .hide() проблема в том, что у меня есть 10 из этих тегов div, которые выглядят одинаково, поэтому я не могу указать тег div, потому что его важно, что только тег div внутри кнопки, которую я нажал, скрывается.

Думаю, мне нужно использовать родителя или что-то в этом роде?

Я попытался следующие Jquery скрипты:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $(".b").click(function() { 
      $("div:eq(0)").hide(); 
     }); 
    }); 
</script> 

Но я выясняю это обыкновение работать beacuse скроет всю Div обертку.

Любые решения оцениваются!

ответ

1
$(".b").click(function() { 
     $(this).parent().hide(); 
    }); 

или

$(".b").click(function() { 
     $(this).parent().parent().hide(); 
    }); 
+0

Вторая работала отлично! – Obsivus

+0

Прохладный, не могли бы вы отметить ответ как правильный? –

0

Вы были близки, просто скрыть родителя баттона:

$(".b").click(function() { 
     $(this).parent('div').hide(); 
    }); 

Или, если вы хотите, чтобы убедиться, что ДИВ получить скрыт, даже если изменить иерархии немного:

$(".b").click(function() { 
     $(this).parents('div.productprice').hide(); 
    }); 
0

Basic DOM: каждый узел dom имеет родительский элемент:

$('.b').click(function() { 
    $(this).parent('div.productprice').hide(); 
}); 
1

Я думаю, вы пытаетесь скрыть весь контейнер. попробуйте использовать closest

$(this).closest('.productholder').hide() 

или если вы просто пытаетесь скрыть родительский DIV, а затем просто использовать .parent()

$(this).parent().hide() 

Полный код:

$(document).ready(function() { 
    $(".b").click(function() { 
     $(this).closest('.productholder').hide(); 
     // or $(this).parent().hide() 
    }); 
}); 
Смежные вопросы