jQuery $(this).val返回0

我有一个这样的简单列表:

  • Item 1
  • Item 2

然后我有一个像这样的jQuery函数:

 $(function() { $('li.large_box').css('cursor', 'pointer') .click(function() { var show_id = $(this).val(); alert(show_id); }); }); 

当我单击列表项时,当我期望值为8或13时,我的alery显示值为0。

因为您应该使用标准DOM元素id属性 。 jQuery的.val()方法与元素的ID 无关

 $('li.large_box').css('cursor', 'pointer').click(function () { var show_id = this.id; alert(show_id); }); 

val()不返回id。 你想要$(this).attr('id')

尝试使用attr()而不是val()

 $(function() { $('li.large_box').css('cursor', 'pointer').click(function() { var show_id = $(this).attr('id'); alert(show_id); }); }); 

你这样做是错的。

id属性旨在用作唯一标识符,而不是数据存储的手段。

此外, .val()用于input, select, textarea元素以访问其当前值。

如果需要元素的属性,请使用.attr()函数 。

如果需要在元素上存储数据,请使用自定义HTML5 data-元素:

 
  • 然后,您可以使用.data()函数访问该值:

     var listItemIdentifier = $(this).data('id'); console.log( listItemIdentifier ); //should output 8 or 13 depending on which you click on 

    使用$(this).attr('id')

  • 不能使用非标准属性的值。

    id属性不是value属性。

    您可以将其设置为获取ID:

     $(this).attr("id"); 

    或者在HTML中设置值

     
  • Item 1
  • 这是一个实例: http : //jsfiddle.net/BBm4R/

     var show_id = $(this).attr('id');