我有简单的按钮:
<button type="button" id="somebutton" value="start">blah</button>
在jQuery中,在bind上('click,function(){.... 我有这个:
$(this).attr("value")
当然这样做的是获取属性的值,在这种特殊情况下是:“start”。好吧,这适用于Firefox,我得到正确的“开始”值。但是在IE 7中,我得到的值是“somebutton”。
为什么?
答案 0 :(得分:4)
我知道这是在不久前发布的,但万一有人在寻找答案......
IE将.val()和.attr(“value”)报告为按钮元素的文本标签(内容),而不是value属性的实际值。
您可以通过暂时删除按钮的标签来解决此问题:
var label = $(this).text();
$(this).text('');
var buttonValue = $(this).val();
$(this).text(label);
IE中还有其他一些带按钮的怪癖。我已发布a fix for most of the issues here。
答案 1 :(得分:3)
<button>
会发生这种情况。它可能是jQuery中的一个错误,或者它可能是IE中的错误,或者它可能是两者的组合。
最后,我选择使用标准<input type="button"/>
来解决问题。
答案 2 :(得分:1)
使用button.attributes.value.nodeValue可以为您提供正确的值。有关详细信息,请参阅jQuery Bug #1954。
关于问题中的原因:你遇到了IE的一个错误。在这种情况下,jQuery还没有提供解决方法。
答案 3 :(得分:0)
要解决此问题,您必须丢失<button>
代码并转而使用<input>
代码。
答案 4 :(得分:0)
使用<input>
标记。它应该工作