You selector has an error:
$(".bookmarked,.bookmarked not")

That will match any elements with a class of 'bookmarked' as well as any
elements of type 'not' descendant of elements with a class of bookmarked. It
seems you've copied the value from the class attribute of your element.
Problem is, the class attribute separates multiple classes by a space. But
those are totally separate classes. But inside your jQuery selector, the
space is a descendant selector (
http://www.w3.org/TR/CSS2/selector.html#descendant-selectors ). So maybe you
mean:

$(".bookmarked, .not")

The other problem is your initial event binding will match elements that
have either of those classes at the time it is run, but since you'll be
adding and removing these classes, there may come a time where an element
has one of these classes, you'll want your event to run on it, but it won't
since it wasn't in this initial set. For that, see

http://docs.jquery.com/Frequently_Asked_Questions#Why_do_my_events_stop_working_after_an_AJAX_request.3F

particularly

"
jQuery Methods

As of jQuery 1.3, you can use the live <http://docs.jquery.com/Events/live>and
die <http://docs.jquery.com/Events/die> methods for event delegation with a
subset of event types.
"

- Richard

On Thu, Aug 13, 2009 at 1:31 AM, Dave Maharaj :: WidePixels.com <
d...@widepixels.com> wrote:

>
> I have 2 class options .bookmarked and .not
>
> <div id="b_97fd0f" class="bookmarked not"> </div>
>
> Or
>
> <div id="b_97fd0f" class="bookmarked"> </div>
>
> My js looks like
>
> $(".bookmarked,.bookmarked not").click(function() {
>                        var url_id = $(this).attr('id').split('_');
>                        var status = $(this).attr('class');
>
>                        //alert(status);
>
>                        $.ajax({
>                                        type: "POST",
>                                        url:
> '/bookmarks/bookmark/'+url_id[1],
>                                        success: function(){
>                                                if (status = "bookmarked
> not") {
>                                        //creating a bookmark
>
> $('#b_'+url_id[1]).removeClass('not');
>               } else if (status = "bookmarked"){
>                                        //deleting the bookmark
>                                   $('#b_'+url_id[1]).addClass('not');
>
>               }
>
>                                        }
>                                                });
>                        return false;
>                });
>
> If I click on a ".bookmarked not" link it removes the "not" class, but if I
> click on a "bookmarked" link it does not add the "not" class.
>
> Now the bookmarks are being created and deleted in the database...just not
> changingthe div class.
>
> Ideas where I went wrong?
>
>
> Dave
>
>

Reply via email to