我有以下HTML代码
<i>0</i>
<i>0</i>
<i>0</i>
<button>Test</button>
HTML标记<i>
中的值会单独更改。什么是Jquery代码来检查所有<i>
值是否为0然后更改按钮值&#34;测试&#34;到&#34;测试2&#34;
我试过
$(document).click(function(){
if($('i').html()=="0")
{
$('button').html("Test2");
}
});
我的所有<i>
代码值仍为0,但我无法看到按钮文字更改
答案 0 :(得分:1)
循环浏览每个i
元素并检查其内容是否为0
,如果是,c == 3
(这意味着有3个零)更改button
的内容{1}}元素。
var c = 0;
$('i').each(function () {
if ($(this).html() == '0') {
c++;
if (c == 3) {
$('button').text('Test2');
}
})
或者你可以试试这个简化的代码:
if ($('i').text() == '000') {
$('button').text('Text2');
}
答案 1 :(得分:0)
实际上,由于表现原因,你不应该通过<i>
整个数组
您应该使用return false;
处理程序内的.each()
来阻止第一个非0
值出现时的循环。
$(document).click(function(){
var change = true;
$('i').each(function() {
if ($(this).text() != '0') {
change = false;
return false;
}
});
if (change)
$('button').text('Test2');
});
答案 2 :(得分:0)
你只需要:
$('button').on('click', function (e) {
// preventing the default action of the button:
e.preventDefault();
$(this).text(function () {
// caching the collection of <i> elements:
var iEls = $('i');
// comparing the number of <i> elements whose text is '0'
// against the number of <i> elements, returning a Boolean;
// if the Boolean is true we return 'text2', if false 'text':
return iEls.filter(function () {
return $(this).text().trim() === '0';
}).length === iEls.length ? 'text2' : 'text';
});
});
$('button').on('click', function(e) {
e.preventDefault();
$(this).text(function() {
var iEls = $('i');
return iEls.filter(function() {
return $(this).text().trim() === '0';
}).length === iEls.length ? 'text2' : 'text';
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<i>0</i>
<i>0</i>
<i>0</i>
<button>Test</button>
&#13;
虽然上面看起来有点麻烦,但它不需要全局或其他外部变量,需要跟踪并避免必须将<i>
元素的数量硬编码到比较中。
参考文献: