2012-03-22 3 views
1

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

<div class='something unknown' id='something_unknown_1'> 
    <button onClick='removeParent(self)'>Remove me and my parent div</div> 
</div> 
<div class='something unknown' id='something_unknown_2'> 
    <button onClick='removeParent(self)'>Remove me and my parent div</div> 
</div> 

... и так далее. Как именно я могу ссылаться на кнопку, которая запускала onClick, не зная идентификатора кнопки? Я хотел бы, чтобы в конечном счете, мой метод removeParent (само) выглядит следующим образом:

buttonThatWasClicked.parent().remove(); 
+1

Инлайн Javascript зло. Вы должны попробовать практиковать [ненавязчивый javascript] (http://en.wikipedia.org/wiki/Unobtrusive_JavaScript). –

+1

@PaoloBergantino: Это не зло. Не нужно быть догматичным о своих предпочтениях. –

+0

@amnotiam: С каких это пор рекомендации по передовым технологиям превратились в «догматические предпочтения»? «Злая» часть была явно застенчивой, но встроенный javascript - это то, чего следует избегать любой ценой. –

ответ

4

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

<div class='something unknown' id='something unknown'> 
    <button class="myClass">Remove me and my parent div</div> 
</div> 
<div class='something unknown' id='something unknown'> 
    <button class="myClass" >Remove me and my parent div</div> 
</div> 

Затем используйте селектор классов jquery для привязки функции, которая удаляет родительский элемент.

$(".myClass").click(function(){ 
    $(this).parent().remove(); 
}); 

Демо: http://jsfiddle.net/cXLqK/

+0

@Atrus Самый низкий голосовой ответ, но принят. Это мой любимый ответ, который я когда-либо публиковал на SO. Думаю, вы не хотели привязываться к каждой кнопке? –

10

Вы можете использовать this ссылаться на кнопку, которая была нажата внутри обработчика щелчка.

$("button").click(function(){ 
    removeParent($(this)); 
}); 

function removeParent(buttonThatWasClicked){ 
    buttonThatWasClicked.parent().remove(); 
} 
+0

Просто заметьте, привязка этой функции к тегу кнопки повлияет на каждую кнопку на странице. –

4

Если у вас есть onclick на HTML-узлов (то есть не установлен с помощью JQuery):

<div class='classA' id='idA'> 
    <button onclick='removeParent(this)'>Remove me and my parent div</div> 
</div> 
<div class='classB' id='idB'> 
    <button onclick='removeParent(this)'>Remove me and my parent div</div> 
</div> 

тогда это будет работать:

removeParent = function(e) { 
    $(e).parent().remove(); 
} 

Рабочий пример :