0

我有以下 jQuery 代码:

这是 HTML:

<div 
    class="continueReading" 
    data-skip="0" 
    data-categories="22,243" 
    data-is="single" 
    data-s="cd1f2f7a7d" 
    data-list="latestNews-sidebar-1"
>
    <a href="javascript:void();" class="latestNewsWidgetMoreLink">get more</a>
    <a href="javascript:void();" class="latestNewsWidgetMoreButton">»</a>
</div>

和 jQuery 是这样的:

$('.latestNewsWidgetMoreLink, .latestNewsWidgetMoreButton').click(
    function()
    {    
        total_items = 10;
        $(this).parent('div').attr('data-skip', total_items);
    }
);

但似乎不起作用。有人可以帮助我吗?这段代码有错误吗?

注意:我也尝试了以下代码,但没有成功:

total_items = 10;
$(this).parent('div').data('skip', total_items);
4

3 回答 3

1

从两个链接中删除javascript:void();,然后使用 firebug 检查 HTML DIV 并单击链接,它将设置data-skip="10"

于 2013-02-13T09:19:08.013 回答
1

该代码在此示例 jsFiddle中适用于我。我怀疑代码执行得太早了,因此click事件处理程序没有绑定到元素(因为它们还不存在)。尝试将其包装在一个$(document).ready()电话中:

$(document).ready(function () {
    $('.latestNewsWidgetMoreLink, .latestNewsWidgetMoreButton').click(function () {
        total_items = 10;
        $(this).parent('div').data('skip', total_items);
    });
});

这将确保代码在 DOM 准备好之前不会执行,因此元素将存在并且可以绑定事件处理程序。

请注意,我做了一些调整:

  1. href从元素的属性中删除了分号<a>- 导致 JavaScript 语法错误
  2. 使用.data()jQuery 函数而不是.attr()
于 2013-02-13T09:25:18.260 回答
1

代码工作正常。看到这个。第二个链接不起作用,因为您忘记了 jQuery 选择器中的点。所以你必须改变

$('.latestNewsWidgetMoreLink, latestNewsWidgetMoreButton')

$('.latestNewsWidgetMoreLink, .latestNewsWidgetMoreButton')
于 2013-02-13T09:29:30.360 回答