3

我正在编写一段代码,它将显示所有具有 class="Short" 的 jquery 按钮的按钮标签

我正在使用以下代码:-

$('.Short').button();
var all_short_btns = $(".Short");
for(i=0; i< all_short_btns.length; i++){
   alert(all_short_btns[i].button( "option", "label" ));
}

html是:

<button class="Short">Label1</button>
<button class="Short">Label2</button>
<button class="Short">Label3</button>
<button class="Short">Label4</button>
<button class="Short">Label5</button>
<button class="Short">Label6</button>

我收到错误:

未捕获的类型错误:对象 # 没有方法“按钮”

我的问题是如何获取每个按钮元素的标签?

提前致谢。

4

4 回答 4

2

您使用了错误的方法,用于.eq(i)获取特定项目,然后通过调用获取文本.html()

jsFiddle

var all_short_btns = $(".Short");
for(i=0; i< all_short_btns.length; i++){
    alert(all_short_btns.eq(i).html());
}

或者,您可以使用$.each(),但它比本机for循环慢很多。

var all_short_btns = $(".Short");
$.each(all_short_buttons, function (i, item) {
    alert(item.html());
});

更新

由于 OP 使用的是 jQuery UI .html(),因此会打印出<span>自动生成的内容并包装内容。发生错误是因为当我们需要 jQuery 对象时,您使用的[i]是获取原始 JavaScript 对象。.eq()获取该索引处的 jQuery 对象。

jsFiddle

all_short_btns.eq(i).button("option", "label")
于 2013-03-24T10:29:08.163 回答
2

这可能会帮助您:

$(".short").each(function(){
    alert($(this).text());
})


$(".short").each(function(){
    alert($(this).html());
})
于 2013-03-24T10:31:13.930 回答
2

您可以使用innerText属性设置或检索对象的开始和结束标记之间的文本。

所以试试这个。

var all_short_btns = $(".Short");
for(i=0; i< all_short_btns.length; i++){
   alert(all_short_btns[i].innerText);
}

或者,您也可以使用eq(i)来获取它。

for(i=0; i< all_short_btns.length; i++){
   alert(all_short_btns.eq(i).html());
}

JS 小提琴示例

于 2013-03-24T10:32:17.240 回答
0

谢谢大家,我发现这也有效:-

alert(all_short_btns.eq(i).button( "option", "label" ));
于 2013-03-24T10:34:28.980 回答