Hi Dave,
A couple things:
1. since you're trying to get the ID of an ancestor of <a
class="deleteTDItem">, you need to add an "s" to "parent."
This should work:
$('#todoList a.deleteTDItem').each(function(index) {
var divId = $(this).parents("div.sidebarToDo").attr("id");
alert($(this).parents("div.sidebarToDo") + " id:" + divId);
$(this).click = function() { $('#' + divId).remove(); };
});
2. Initially you were trying to use the DOM property rather than the
jQuery attribute method. That's fine. You can do it that way, but you
first need to convert the jQuery object into a DOM node.
This should work, too:
$('#todoList a.deleteTDItem').each(function(index) {
var divId = $(this).parents("div.sidebarToDo")[0].id
alert($(this).parents("div.sidebarToDo")[0].id + " id:" + divId);
$(this).click = function() { $('#' + divId).remove(); };
});
--Karl
_________________
Karl Swedberg
www.englishrules.com
www.learningjquery.com
On Feb 21, 2007, at 11:16 AM, <[EMAIL PROTECTED]>
<[EMAIL PROTECTED]> wrote:
-------Original Message-------
From: Chris Ovenden <[EMAIL PROTECTED]>
Subject: Re: [jQuery] How to get the ID of the parent node?
Sent: Feb 21 '07 16:04
On 2/21/07, SAM COLLETT <[LINK: mailto:[EMAIL PROTECTED]
[EMAIL PROTECTED]> wrote: On 21/02/07, [LINK:
mailto:[EMAIL PROTECTED] [EMAIL PROTECTED] <
[LINK:
mailto:[EMAIL PROTECTED] [EMAIL PROTECTED]>
wrote:
Hi,
Following up from a question I asked yesterday, I wanted to get the
closest parent DIV given an arbitrary nested element. But when I
request
the ".id" of that element, i repeatedly get an "undefined"
message, even
though this call, "$(this).parent(" div.sidebarToDo")" yields an
object.
$('#todoList
a.deleteTDItem').each(function(index) {
var divId =
$(this).parent("div.sidebarToDo").id;
alert(divId); // alwasy gives
'undefined'
$(this).click = function() { $('#' +
divId).remove(); };
});
This is the HTML in question:
<div class="sidebarToDo" width="100%" id="dToDo3">
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td><input id="cbTdId3" onClick="var textDecor =
(this.checked ?
'line-through' : 'none');
$('#textId3').css('text-decoration', textDecor);"
type="checkbox" id="tdcb3" ></td>
<td id="textId3" class="sidebarText" style="text-decoration:
none">Start Work</td>
<td align="right"><a class="editTDItem" href='#'><img
src="images/edit.gif" alt="Edit" border="0"></a></td>
<td align="right"><a class="deleteTDItem"
href="javascript:toggleDiv('dToDo3');"><img
src="images/deleteLink.gif" alt="Delete" border="0"></a></td>
</tr>
</table>
</div>
Thanks, - Dave
You can get the id via attr:
$(this).parent("div.sidebarToDo").attr("id")
To spell it out a little more clearly, the API for attributes has
changed
in jQuery 1.0.3+ and shortcuts like .id() no longer work
--
Chris Ovenden
[LINK: http://thepeer.blogspot.com] http://thepeer.blogspot.com
"Imagine all the people / Sharing all the world"
Thanks, but I'm still getting "undefined" even though I can an
object for my reference to the DIV. Any ideas on how to
troubleshoot? here's the JS:
$('#todoList a.deleteTDItem').each(function(index) {
var divId = $(this).parent
("div.sidebarToDo").attr("id");
alert($(this).parent("div.sidebarToDo") + "
id:" + divId);
$(this).click = function() { $('#' +
divId).remove(); };
});
_______________________________________________
jQuery mailing list
[email protected]
http://jquery.com/discuss/
_______________________________________________
jQuery mailing list
[email protected]
http://jquery.com/discuss/