Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie
Hi all! We have been experiencing an issue on site where threads have been missing the latest postings. The platform host Vanilla are working on this issue. A workaround that has been used by some is to navigate back from 1 to 10+ pages to re-sync the thread and this will then show the latest posts. Thanks, Mike.
Hi there,
There is an issue with role permissions that is being worked on at the moment.
If you are having trouble with access or permissions on regional forums please post here to get access: https://www.boards.ie/discussion/2058365403/you-do-not-have-permission-for-that#latest

jQuery - Get an element in the parent

  • 28-05-2009 11:30am
    #1
    Closed Accounts Posts: 17,208 ✭✭✭✭


    Hey guys,

    I have been messing around with jQuery for the first time and have hit upon a snag.

    I have a list structured like this.

    [HTML]
    <ul><li>
    <h3><a href="some.where">Title</a></h3>
    Some other data stuff goes in here.
    <a href="some.where.else" class="rate">Rate them</a>
    </li></ul>
    [/HTML]

    What I am trying to go is grab the Title from the first link. Ideally, I'd like to do this in a way that can be seperated out to other information that may be in the list item as well.

    I can get it to grab all the information using $(this).parent().html(), but as soon as I start using $(this).parent().get(index).html() it starts failing on me. Can't for the life of me see what the problem is though.

    Any ideas?


Comments

  • Closed Accounts Posts: 18,163 ✭✭✭✭Liam Byrne


    I'm assuming you're triggering this from the 2nd link ?

    If so :

    $(this).parent().find("h3 a").html()

    or

    $(this).parent().find("a:first").html()

    ....should do the trick for you.

    should do the trick for you.


  • Closed Accounts Posts: 18,163 ✭✭✭✭Liam Byrne


    Actually, even $(this).parent().find("h3").text() will work (.text dumps any HTML tags).

    Not sure which of the above 3 would be best, performance-wise......but that's only an issue if there are lots of links of the class "rate".


  • Closed Accounts Posts: 17,208 ✭✭✭✭aidan_walsh


    Sorted, cheers Liam.

    The .find("h3 a") was perfect.


  • Registered Users, Registered Users 2 Posts: 1,287 ✭✭✭kevteljeur


    Liam Byrne wrote: »
    Actually, even $(this).parent().find("h3").text() will work (.text dumps any HTML tags).

    Not sure which of the above 3 would be best, performance-wise......but that's only an issue if there are lots of links of the class "rate".

    I think the performance issue is probably moot if you're using the very latest version of JQuery; they've been trumpeting the performance of their new selector engine...



    .


  • Closed Accounts Posts: 18,163 ✭✭✭✭Liam Byrne


    kevteljeur wrote: »
    I think the performance issue is probably moot if you're using the very latest version of JQuery; they've been trumpeting the performance of their new selector engine...

    .

    No matter how good the performance of something is, if you give it more work to do it'll be slower.

    But like I said, unless you have absolutely LOADS of "rate" links, the difference would be negligible...it would really only come into play if you talking about cumulative effect of a number of "handy-but-unoptimised" DOM calls.

    ok, so - I'll admit it....I was just showing off that I could find 3 ways and was aware that there were performance implications with different approaches! ;):D :P


  • Advertisement
  • Moderators, Science, Health & Environment Moderators Posts: 9,015 Mod ✭✭✭✭mewso


    The biggest issue performance wise I think with jQuery is not to use the same selector repeatedly. Instead use the each function. i.e. don't do this:-

    $(selector).html("blah");
    $(selector).addClass("myclass");

    do this:-

    $(selector).each(function() {
    $(this).html("blah");
    $(this).addClass("myclass");
    });

    As far as I am aware the second way will be more efficient but I'm open to correction.


Advertisement