Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery按钮数组_Javascript_Jquery_Jquery Ui_Typeerror - Fatal编程技术网

Javascript Jquery按钮数组

Javascript Jquery按钮数组,javascript,jquery,jquery-ui,typeerror,Javascript,Jquery,Jquery Ui,Typeerror,我正在编写一段代码,它将显示所有jquery按钮的按钮标签,这些按钮具有class=“Short” 我正在使用以下代码:- $('.Short').button(); var all_short_btns = $(".Short"); for(i=0; i< all_short_btns.length; i++){ alert(all_short_btns[i].button( "option", "label" )); } $('.Short').button(); var al

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

我正在使用以下代码:-

$('.Short').button();
var all_short_btns = $(".Short");
for(i=0; i< all_short_btns.length; i++){
   alert(all_short_btns[i].button( "option", "label" ));
}
$('.Short').button();
var all_short_BTN=$(“.short”);
对于(i=0;i
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>
Label1
标签2
标签3
标签4
标签5
标签6
我得到一个错误:

未捕获的TypeError:对象#没有方法“按钮”

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


提前感谢。

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

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

这可能会帮助您:

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


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

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

所以试试这个

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

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

alert(all_short_btns.eq(i).button( "option", "label" ));

OP使用jQueryUI。当然,如果在jQuery对象上调用,那么使用
.button(“option”、“label”)
是非常好的。请注意,Firefox不支持
.innerText
(这里是
.textContent
)。谢谢@FelixKling,我已经更新了该选项的答案,OP也使用了jQuery UI。使用
.button(“option”、“label”)
非常好。尽管这一点被接受,但我注意到
.html
在这里不是一个好的解决方案,因为jQuery向button元素添加了额外的元素。看。是的,我同意,但这里没有人用。按钮(“选项”,“标签”)代替我给出答案。我不能接受我的回答。但这是真的,我从这个答案中知道了.eq(I)的诀窍。所以我打了个勾。我更新了我的答案,说明了原因。仅供参考,尝试使用
items.eq(i)
而不是像您那样使用
$(items[i])
。后者执行额外的不必要的转换。OP使用jQuery UI。使用
。按钮(“选项”、“标签”)
非常好。您的答案是在您确定之前给出的。为什么你不考虑接受它们。@silentboy:其他人都建议使用
.text
.html
而不是
.button(“选项”、“标签”)
,所以答案不一样。为什么你认为OP不打算接受其他答案之一?他们还得等上几分钟才能回答。问了10分钟后,我无法接受答案。在那之前我需要等待。当然,我会接受其中一个答案,因为下面给出的答案,我能够找到我的路。@silentboy:只有在这些答案的帮助下,我才能确定我的答案。所以我只想分享一下。10分钟后,我接受了我认为最好的答案。太好了,我认为给予反馈是件好事+1.谢谢你的提问
$(".short").each(function(){
    alert($(this).text());
})


$(".short").each(function(){
    alert($(this).html());
})
var all_short_btns = $(".Short");
for(i=0; i< all_short_btns.length; i++){
   alert(all_short_btns[i].innerText);
}
for(i=0; i< all_short_btns.length; i++){
   alert(all_short_btns.eq(i).html());
}
alert(all_short_btns.eq(i).button( "option", "label" ));