JQuery проблема? - PullRequest
       34

JQuery проблема?

2 голосов
/ 06 октября 2010

У меня проблемы с jquery, которые у меня были в течение нескольких дней, я новичок в этом, так что извините за мою глупость в этом вопросе. спасибо:))

HTML-код:

<ul class="statuses">
<li id="set_23" class="message">
  // this is meant to increase everytime you click the vote_up just like stackoverflow 
  <span class="vote_count">27</span>
  <a href="#" class="vote_up"><img src="img/uparrow.png" /></a>
  <a href="#" class="vote_down"><img src="img/downarrow.png" /></a>

 </li>

</ul>

это мой код jquery:

$(document).ready(function() {
    $('#statuses').delegate('.vote_up', 'click', function() {
       //get the id
        var the_id = $(this).closest('.message').attr('id').split('_').pop();
        //the main ajax request
        $.ajax({
            type: "POST",
            data: "action=vote_up&id=" + the_id,
            url: "ajax/votes.php",
            success: function (msg) {
                  // fade in the new vote_count
                $(this).siblings("span.vote_count").html(msg).fadeIn();
                  // get the child <img> and set its src
                $(this).children("img").attr("src", "img/uparrowActive.png");
            }
        });
    });

});

РЕДАКТИРОВАТЬ: также не работает jquery fade.in и src изменения изображения, ссылаюсь ли я на правильный диапазон или класс (теперь работает запрос ajax)

Ответы [ 3 ]

5 голосов
/ 06 октября 2010

Первое, что нужно выпрыгнуть:

<ul class="statuses"> 

и

$('#statuses')

... символом # в jQuery является селектор идентификатора (аналогично CSS). Поскольку ваш <ul> установлен на class="statuses", вам нужно использовать селектор классов:

$('.statuses')

Это само по себе сломает все ваши JQuery

1 голос
/ 07 октября 2010

Из документации jQuery:

beforeSend, error, dataFilter, Успех и полные варианты все взять функции обратного вызова, которые вызываются в подходящие времена. Этот объект ибо все они будут объектом в свойство context передано в $ .ajax в настройках; если бы этого не было указал, что это будет ссылка на сами настройки Ajax.

Итак, попробуйте добавить context: this в параметры запроса ajax.

0 голосов
/ 06 октября 2010

Изменить это

var the_id = $(this).closest('.message').attr('id').split('_').pop();

к этому

var the_id = $(this).parents('.message').attr('id').replace('set_', '');

или альтернативно

var the_id = $(this).parent().attr('id').replace('set_', '');

если вы знаете, что родительский элемент вашей ссылки всегда будет ul.message.

...