2012-11-20 2 views
4

У меня есть слой А и слой B внутри слоя АУдаление родителя без нажатия на детях

enter image description here

http://jsfiddle.net/PhZhY/

Можно ли удалить слой А с JQuery функции remove() мыши только на на слой А а не на слой B?

+1

Если вы хотите, чтобы B остался, и я предполагаю, что вы это делаете, то это не может быть ребенок А. Вам нужно будет позиционировать его поверх A, но сохраните его как отдельную сущность. –

+0

Был ли отредактирован вопрос? Я был уверен, что его попросили «Б» остаться. – F0G

+0

Нет, это не отредактировано. В противном случае вы можете просмотреть информацию о редактировании. – Goldie

ответ

3
$("body").on("click", ".a1", function(e) { 
    if (this === e.target) $(this).remove(); 
});​ 

DEMO:http://jsfiddle.net/PhZhY/1/

+0

Это удаляет b так же, как его делает. –

+2

Да, но дело не в том, чтобы вызвать функцию, нажав на B – MaciejLisCK

+1

Нет, он хочет, чтобы B оставался нетронутым, даже если его родительский элемент удаляется. – Andy

2

Если вы хотите .b1 остаться и удалить только .a1

$('.a1').live('click',function() { 
    $(".b1", this).unwrap(); 
}); 

http://jsfiddle.net/PhZhY/3/

Вы можете удалить, что Див, даже если вы не» не знаю ни одного ch ИСД элемент:

$('.a1').live('click',function() { 
    $(".a1 :first-child").unwrap(); 
}); 

http://jsfiddle.net/PhZhY/5/

Если вы хотите удалить .a1 DIV, если он не нажал в .b2 этого является то, что вам нужно:

$('.a1').live('click',function() { 
    $(".a1 :first-child").unwrap(); 
}); 

$('.b1').live('click',function() { 
throw "stop execution"; 
});​ 

http://jsfiddle.net/PhZhY/6/

По Комментарий @Rick Calder: Если вы хотите, вы можете использовать .addClass() для изменения класса или .removeClass() для удаления класса.

+0

лучший ответ, просто нужно настроить класс, чтобы держать B в положении. –

+0

Несмотря на то, что (по какой-то причине) он покидает B, событие работает как нажатием A, так и B, что является недопустимым из-за вопроса. – VisioN

+0

@VisioN см. Редактирование. – F0G

0

Вот как я прочитал вопрос:

Если нажать на .b1, ничего не должно произойти. Если вы нажмете на .a1, его следует удалить.

Если это намерение, вот JQuery:

$('.b1').click(function(e){ 
    e.stopImmediatePropagation(); 
}); 

$('.a1').click(function(){ 
    $(this).remove(); 
}); 

Вот jsbin. Примечание: css, html, бесстыдно украденный из @ Vision's jsFiddle

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