我想在一段时间内比较这篇课文“免费!”执行一些jquery代码
这是我使用的代码,但不起作用。
<script>
if (jQuery('span.amount:contains("Free!")')) {
jQuery('.single_add_to_cart_button').text('More Info');
jQuery(".amount").css("display", "none");
}</script>这是一个html
<span class="amount">Free!</span>工作,但也执行时,文字不是“免费!”
更新确定的问题是其他的,在一个页面中用类的跨度“数量比较多的时间在某些情况下有文本,而在其他情况下有其他文本”。
问题是当执行jquery时
jQuery('.single_add_to_cart_button').text('More Info');
jQuery(".amount").css("display", "none");改变所有的跨度与类“数量,而不仅仅是与内容”免费!
因此,存在一种隐藏和替换文本的方法,其内容仅为“免费!”在同一页?
发布于 2015-10-17 14:31:07
jQuery('div.amount:contains("Free!")')返回一个jQuery对象。jQuery对象在条件语句中总是被计算为true,即使它是空的。
要知道元素是否存在,您应该检查长度:
if (jQuery('div.amount:contains("Free!")').length) { // 0 == false, else true
jQuery('.single_add_to_cart_button').text('More Info');
jQuery(".amount").css("display", "none");
}还请注意,您的HTML是类“span”的div,而不是div。
发布于 2015-10-17 14:27:56
使用.html()获取html值,然后与文本Free!进行比较。
这段代码应该可以工作。
if (jQuery('div.amount').html() == 'Free!') {
jQuery('.single_add_to_cart_button').text('More Info');
jQuery(".amount").css("display", "none");
}您还可以使用jQuery.each()检查每个金额,如下所示:
jQuery('div.amount').each(function(){
if ($(this).html() == 'Free!') {
jQuery('.single_add_to_cart_button').text('More Info');
$(this).css("display", "none");
}
});发布于 2015-10-17 14:38:52
好的,如果是这样的话,你需要缓存一个包含“免费”。考虑到这一点:
<span class="amount">Free!</span>
<script>
var $free = jQuery('.amount:contains("Free")');
if ($free.length) {
jQuery('.single_add_to_cart_button').text('More Info');
$free.hide();
}
</script>https://stackoverflow.com/questions/33187683
复制相似问题