2015-01-08 2 views
1

У меня есть следующий HTML:Как получить элемент span с jQuery?

<a href="javascript:search_rate(this, 'key', 'upvote', 'url');"> 
    <div> 
     <span class="glyphicon glyphicon-thumbs-up"></span> <span class="rating">0</span> 
    </div> 
</a> 

В функции search_rate, я хотел бы использовать эту переменную, что я прошел, чтобы получить элемент с классом = «рейтинг», а затем обновить его значение от 0 до 1 . Я с помощью JQuery, и я написал следующее, чтобы попытаться получить элемент:

update_node = $(this).find('.rating'); 

Однако, по какой-то причине update_node не указывает на правильный элемент DOM. Просто для того, чтобы уточнить, что я новичок и борется с тем, как использовать jQuery для навигации по DOM. Помощь очень ценится, спасибо!

+0

jQuery в порядке, HTML неправильный. Я не думаю, что «DIV» разрешено в качестве ребенка «A». – Barmar

+0

'this' будет окном внутри вашей функции, объявлением функции функции. Нужно использовать первый именованный аргумент вместо 'this' – charlietfl

+0

Это фактически вызов в функции. Я просто изменил название здесь, потому что думал, что было бы лишним вставить все это ... –

ответ

1

Если вы собираетесь использовать jQuery, вам не нужно передавать функцию через href. Вам вообще не нужно использовать тег a. Просто цель div щелкнул и обновить его ребенок .rating

HTML

<div class="upvote"> 
    <span class="glyphicon glyphicon-thumbs-up"></span> 
    <span class="rating">0</span> 
</div> 

JS

$(".upvote").click(function(){ 
    $(this).find(".rating").html("1");  
}); 

EXAMPLE 1

ПРИМЕЧАНИЕ:, если вы хотите, чтобы сделать отсчет upvote системы, я бы тянуть номер на странице загрузки и добавить к нему 1 по щелчку:

//pull current number 
var currentCount = $(".upvote .rating").text(); 

$(".upvote").click(function(){ 
    $(this).find(".rating").html(parseInt(currentCount)+1); 
}); 

EXAMPLE 2

UPDATE

Перейти другие значения в случае щелчка, просто добавьте их в качестве атрибутов данных:

<div class="upvote" data-one="hello" data-two="goodbye"> 

EXAMPLE 3

+0

просто вытащите текущий текст в обработчике кликов, чтобы увеличить его. В списке из 100 элементов, каждый с рейтингом будет намного проще – charlietfl

+0

Привет, спасибо за ответ, я понимаю, что вы имеете в виду. Причина, по которой я сделал этот href, состоит в том, что мне нужно передать разные аргументы этой функции search_rate в зависимости от элемента в списке, который был нажат, поэтому я не уверен, как бы это сделать с действием click на div, который вы предложили. –

+0

@Andrew просто передает то, что вы хотите, как атрибуты данных, и вы можете вытащить их на событие click. Я обновил свой ответ – jmore009

Смежные вопросы