在IE中使用jQuery获取属性

时间:2009-05-20 15:32:53

标签: jquery internet-explorer attributes

我有简单的按钮:

<button type="button" id="somebutton" value="start">blah</button>

在jQuery中,在bind上('click,function(){.... 我有这个:

$(this).attr("value")

当然这样做的是获取属性的值,在这种特殊情况下是:“start”。好吧,这适用于Firefox,我得到正确的“开始”值。但是在IE 7中,我得到的值是“somebutton”。

为什么?

5 个答案:

答案 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)

使用<input>标记。它应该工作

答案 4 :(得分:0)

要解决此问题,您必须丢失<button>代码并转而使用<input>代码。