2

我正在构建数据表,并通过在数据库中设置总记录,我得到了它们的总数。

现在我对 JavaScript 中的点击事件有点困惑。这就是我这样做的方式:

 for (var cnt = pageno; cnt < pageno + 5; cnt++) {
                $("#newList").append('<li id="pageno" value=""' + cnt + ' onclick="GetPageno();" > ' + cnt + '</li>');
            }

这是我当前的循环,将设置 5 个列表。现在,如果我想获取当前列表的值,那么我正在这样做:

function GetPageno() {
        //this.val();


        alert(document.getElementById('pageno').val());


    }

我在网页上有 1 到 5 个数字列表。

我如何获得我点击的那个数字的价值?

前任。如果我单击“5”,则警报应该带有值“5”,与所有列表元素相同。

4

8 回答 8

2

通过这样做<li id="pageno",您不止一次重复相同的 id,这是不正确的。

而是使用<li id="pageno_'+cnt+'"和使用下面的代码。

$(document).on('click','li[id^="pageno_"]',function(){
   alert($(this).attr('value'));
});

DEMO

于 2013-04-03T04:47:55.540 回答
1

您调用val()li是不正确的,您可以使用 .attr("value") 如果您使用data()属性(例如 data-someattributeName 使其更清晰)会更好。您将相同的 id 分配给多个不合法的元素。为它们分配一个类并将事件与类绑定,您将能够获得所需的属性。

创建它们时将类添加到 li 元素,您没有正确分配并将空字符串分配给cntvalue

for (var cnt = pageno; cnt < pageno + 5; cnt++) {
     $("#newList").append('<li id="pageno" class="pageno" value=""' + cnt + ' onclick="GetPageno();" > ' + cnt + '</li>');
}

使用类选择器绑定点击事件

$(".pageno").click(function() {
    alert($(this).attr('value'));
})

现场演示,使用data()和类选择器。在这里,我还分配了unique Idspageno.

pageno = 1;
for (var cnt = pageno; cnt < pageno + 5; cnt++) {
     $("#newList").append('<li id="pageno"'+cnt+' class="pageno" data-custom="' + cnt + '" onclick="GetPageno();" > ' + cnt + '</li>');
}

$(".pageno").click(function() {
    alert($(this).data('custom'));
});
于 2013-04-03T04:44:30.187 回答
1

id 必须是唯一的,你可以这样做:

for (var cnt = pageno; cnt < pageno + 5; cnt++) {
   $("#newList").append('<li class="pageno" value="'+cnt+'"> ' + cnt + '</li>');
}

和:

$("#newList").on("click", "li.pageno", function() {
  alert( $(this).val() );
});

jsFiddle演示

于 2013-04-03T04:45:25.843 回答
1

您的 value 属性有一个小错误。在 cnt 之后移动的双引号。并将 li 对象传递给函数,即 GetPageno(this),如下所示,

 for (var cnt = 1; cnt <= 5; cnt++) {
     $("#newList").append('<li id="pageno" value="' + cnt + '" onclick="GetPageno(this);" > ' + cnt + '</li>');
 }

然后获取方法中传入的li对象的值。

function GetPageno(obj) {
    alert(obj.value);
}
于 2013-04-03T05:12:54.147 回答
0

Id 应该是唯一的,您应该使用 class 代替。然后你可以使用jQuery.each()来迭代你的类:

$(".pageno").each(function() {
    alert($(this).attr('value'));
})
于 2013-04-03T04:44:41.277 回答
0

由于以下原因,您遇到了问题:

  • ids 必须是唯一的,您应该使用class.
  • 您还应该在之后附加您的事件,而不是内联(偏好)。
  • 将您的元素引用为this并使用.text()not .val()asvalue不是li.

    for (var cnt = 1; cnt < 5; cnt++) {
        $("#newList").append('<li class="pageno" ' + cnt + '>' + cnt + '</li>');
    }
    $('.pageno').click(GetPageno);
    
    function GetPageno() {
        alert($(this).text());
    }
    
于 2013-04-03T04:45:20.843 回答
0

这样做:

for (var cnt = pageno; cnt < pageno + 5; cnt++) {
                    $("#newList").append('<li id="pageno"+cnt value=""' + cnt + ' onclick="GetPageno(this.value);" > ' + cnt + '</li>');
                }
    function GetPageno(val) {


            alert(val);


        }
于 2013-04-03T04:45:40.500 回答
0

你应该为所有人使用类名

  • 而不是身份证。id 在整个 html 页面中必须是唯一的

    你可以改变你的代码

    for (var cnt = pageno; cnt < pageno + 5; cnt++) {
     $("#newList").append('<li class="pageno" value="'+cnt+'"> ' + cnt + '</li>');
    }
    

    并在文档就绪范围内添加新的 jquery 函数

    $(".pageno").click(function() {
    alert($(this).attr('value'));
    

    })

  • 于 2013-04-03T04:48:54.420 回答