使用jQuery列表项值始终为0

时间:2015-01-14 15:33:14

标签: javascript jquery html list

使用按钮的值填充textarea的按钮页面。

这适用于作为按钮的项目,但无法使其适用于列表项目。

我必须使用列表项,因为某些按钮有一个下拉列表。

jsfiddle显示列表项警告0甚至认为它确实有值。

http://jsfiddle.net/hsw32zv8/

<li class='item_value' value='value'>
  <a href='#'>Click</a>
</li>

<br><br>

<button type='button' class='btn btn-success item_value' value='value2'>Click 2</button>

jQuery:

$(".item_value").on('click',function(){
  alert(this.value);
});

4 个答案:

答案 0 :(得分:7)

value不是li元素的有效属性(除非它位于ol中,但鉴于您的问题以及您拥有的属性的价值,这似乎不太可能字符串不是数字),该标记类型的DOMElement也不具有value属性。

向标记添加非标准属性会使页面无效,并可能导致JS和UI问题。如果要创建自定义属性,请使用data-*

<li class="item_value" data-value="value">
    <a href="#">Click</a>
</li>
$('.item_value').on('click', function(){
    alert($(this).data('value')); // = 'value'
});

答案 1 :(得分:4)

li元素没有value属性。但是,如果您仍想使用attr方法:

$( this ).attr( 'value' );

jsFiddle

答案 2 :(得分:2)

列表项<li>有一个value,但它只需要数字(注意它们应该在<ol>中)。你给了一个字符串(解释为0),例如:

<li class='item_value' value='1010'>
    <a href='#' value="test">Click</a>
</li>

将显示为1010的值。您可以通过添加data-属性来解决此问题:data-value="someStringHere"

答案 3 :(得分:2)

刚刚将您的this.value修改为$(this).attr('value')

所以完整的代码:

$(".item_value").on('click',function(){
    alert($(this).attr('value'));
});

希望能帮助