adam
adam

Reputation: 441

jquery select class inside parent div

I'm trying to change the alt of the image, I'm clicking by selecting the image's class (add_answer)

Note: .add_answer shows up multiple times inside different containing div's

jQuery(function(){   // Add Answer

    jQuery(".add_answer").click(function(){
        var count = $(this).attr("alt");
        count++;
        $('.a_type_'+count+'').show();
        $(this).parents("div:first").$('.add_answer').attr("alt", count);
    }); 

});

This line doesn't seem to be working, how do I select this add_answer class by way of it's parent div

$(this).parents("div:first").$('.add_answer').attr("alt", count);

Anyone else have an idea?

I'm trying having trouble decreasing the alt value on the .add_answer image when .destroy_answer is clicked

jQuery(function(){   // Hide Answer

    jQuery(".destroy_answer").click(function(){
        $(this).parents("div:first").hide();
        var count = $('.add_answer').attr("alt");
        count--;
        $('.add_answer',$(this).parent('div:first')).attr('alt',count);


    }); 

});

Problem line:

$('.add_answer',$(this).parent('div:first')).attr('alt',count);

Upvotes: 23

Views: 101341

Answers (3)

Tobias Cudnik
Tobias Cudnik

Reputation: 9630

You code is almost correct. Required change is to use .find instead of .$ after .parents method. Use of .parent instead of .parents should be avoided, this way your code will be more unobtrusive (precisely - this way img can be non-direct child of the div).

$(this).parents('div:eq(0)').find('.add_answer')

You can manipulate :eq(0) to select eg third parent div using :eq(2).

Upvotes: 5

Eran Galperin
Eran Galperin

Reputation: 86805

you can use the parent div as the scope:

 $('.add_answer',$(this).parent('div:first')).attr('alt',count);

Upvotes: 30

Andreas Grech
Andreas Grech

Reputation: 108040

This should work:

$(this).parent("div").find(".add_answer").attr("alt", count);

Upvotes: 15

Related Questions