使用 jQuery forEach 查找

原始点击发生的位置

发布于 2024-12-09 18:50:59 字数 955 浏览 0 评论 0原文

我有一个

列表,其中可能会产生一些点击。我知道如何用这样的方式滚动它们:

        $('p').each(function() { 

        });

但我不明白的是如何获取这些段落中某些项目的值。我正在此处查看 API 的属性: http://api.jquery.com/category/attributes/ 但不知怎的,我没有看到太多相关的东西。

这是我的

的典型内容,

<p class="half_text">0 
    <strong>
      <a class="vote_up" style="color: #295B7B; font-weight:bold;" href="#" data-problem_id="48">Vote Up</a>
    </strong> 
    | 0 
    <strong>
        <a class="vote_down" style="color: #295B7B; font-weight:bold;" href="#" data-problem_id="48">Vote Down</a>
    </strong>
</p>

我需要做的是增加或减少“half_text”内或 | 之后的 0。整个事情的中心人物。我可以将它们包装在 span 标记内,但是如何将 span 标记与特定

的 data-problem_id="48" 部分相匹配?

谢谢!!

I have a list of <p> where some clicks may originate. I understand how to scroll through them with something like this:

        $('p').each(function() { 

        });

But what I don't understand is how to get the values of some items inside those paragraphs. I am looking at the API here for attributes: http://api.jquery.com/category/attributes/ but somehow I see not much relevant stuff.

Here is a typical contents of my <p>

<p class="half_text">0 
    <strong>
      <a class="vote_up" style="color: #295B7B; font-weight:bold;" href="#" data-problem_id="48">Vote Up</a>
    </strong> 
    | 0 
    <strong>
        <a class="vote_down" style="color: #295B7B; font-weight:bold;" href="#" data-problem_id="48">Vote Down</a>
    </strong>
</p>

What I need to do is increment or decrement the 0 that is inside the "half_text" or right after the | character in the middle of the whole thing. I can wrap them inside the span tag, but how do I match up the span tag with the data-problem_id="48" part of that particular <p>?

Thanks!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

浅语花开 2024-12-16 18:50:59

我建议您将值包装成跨度以便于阅读:

<p class="half_text">
    <span class="votes_up">
        0 
    </span>
    <strong>
      <a class="vote_up" style="color: #295B7B; font-weight:bold;" href="#" data-problem_id="48">Vote Up</a>
    </strong> 
    |  
    <span class="votes_down">
        0 
    </span>
    <strong>
        <a class="vote_down" style="color: #295B7B; font-weight:bold;" href="#" data-problem_id="48">Vote Down</a>
    </strong>
</p>

然后,脚本更简单且更易于阅读:

$('p.half_text a.vote_up').click(function(e){
    e.preventDefault();
    var votes = $(this).closest('span.votes_up');
    votes.text((+votes.text() || 0) + 1);
});
$('p.half_text a.vote_down').click(function(e){
    e.preventDefault();
    var votes = $(this).closest('span.votes_down');
    votes.text((+votes.text() || 0) + 1);
});

I suggest you wrap your values into spans for a simpler reading :

<p class="half_text">
    <span class="votes_up">
        0 
    </span>
    <strong>
      <a class="vote_up" style="color: #295B7B; font-weight:bold;" href="#" data-problem_id="48">Vote Up</a>
    </strong> 
    |  
    <span class="votes_down">
        0 
    </span>
    <strong>
        <a class="vote_down" style="color: #295B7B; font-weight:bold;" href="#" data-problem_id="48">Vote Down</a>
    </strong>
</p>

And then, the script is more simple and more easy to read :

$('p.half_text a.vote_up').click(function(e){
    e.preventDefault();
    var votes = $(this).closest('span.votes_up');
    votes.text((+votes.text() || 0) + 1);
});
$('p.half_text a.vote_down').click(function(e){
    e.preventDefault();
    var votes = $(this).closest('span.votes_down');
    votes.text((+votes.text() || 0) + 1);
});
情愿 2024-12-16 18:50:59

您根本不需要使用each 循环。如果您甚至要处理链接上的点击,您可以执行以下操作:

var $this = $(this);
var p = $this.parentsUntil('p');
if($this.hasClass('vote_up')){
    $this.text(parseInt($this.text, 10) + 1);
}
else {
    $this.text(parseInt($this.text, 10) - 1);
}

You don't need to use an each loop at all. If you're handling the click even on the links, you could do something like:

var $this = $(this);
var p = $this.parentsUntil('p');
if($this.hasClass('vote_up')){
    $this.text(parseInt($this.text, 10) + 1);
}
else {
    $this.text(parseInt($this.text, 10) - 1);
}
裂开嘴轻声笑有多痛 2024-12-16 18:50:59
$('.vote_up').click(function(event) {
  var span = $(event.target).parent().find('.yourSpanClass');
  span.html(parseInt(span.html())+1);
};

我将为您留下为 vote_down 做同样的事情。

$('.vote_up').click(function(event) {
  var span = $(event.target).parent().find('.yourSpanClass');
  span.html(parseInt(span.html())+1);
};

I will leave for you doing the same thing for vote_down.

戏舞 2024-12-16 18:50:59

我想这就是你想要的 http://jsfiddle.net/7T4AK/

我添加了 spans 这样您就可以轻松访问需要递增的数字。
这应该会让您走上正确的道路,弄清楚如何对否决票做同样的事情。

$('a.vote_up').click(function(){
    var span = $(this).closest('p').find('span.up');
    span.text(parseInt(span.text(),10) + 1);
});

I think this is what you are after http://jsfiddle.net/7T4AK/

I added spans so you can easily access the number that needs to incremented.
This should get you on the right track to figuring out how to do the same for the down vote.

$('a.vote_up').click(function(){
    var span = $(this).closest('p').find('span.up');
    span.text(parseInt(span.text(),10) + 1);
});
空城仅有旧梦在 2024-12-16 18:50:59
$('p').click(function(e){
    alert( $(e.target).html() );
});

从这里开始工作..

$('p').click(function(e){
    alert( $(e.target).html() );
});

work on from here..

梦醒灬来后我 2024-12-16 18:50:59

您应该将数字包装在 标记中,然后您可以执行以下操作:

$('a', 'p.half_text').click(function(e) {
    var $this = $(this), $p = $this.closest('p.half_text'), $num, chg = 1;
    if($this.hasClass('vote_up')) {
        $num = $p.find('span.up');
    }
    else if($this.hasClass('vote_down')) {
        $num = $p.find('span.down');
        chg = -1;
    }
    $num.text(parseInt($num.text(), 10) + chg);
});

演示:http://jsfiddle.net/gRLad/7/

You should wrap your numbers in <span> tags, and then you can do something like this:

$('a', 'p.half_text').click(function(e) {
    var $this = $(this), $p = $this.closest('p.half_text'), $num, chg = 1;
    if($this.hasClass('vote_up')) {
        $num = $p.find('span.up');
    }
    else if($this.hasClass('vote_down')) {
        $num = $p.find('span.down');
        chg = -1;
    }
    $num.text(parseInt($num.text(), 10) + chg);
});

Demo: http://jsfiddle.net/gRLad/7/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文