jQuery将类添加到包含一个字符串而不是另一个字符串的对象

时间:2014-08-29 03:24:18

标签: jquery

我不明白这里的意思。这为第5行提供了一个错误“未定义不是函数”。我想为每个具有“.mp3”但没有“.php”的链接添加一个类。

jQuery(document).ready(function(){ jQuery('a[href$=".mp3"]') .each(function() { if (this.toString().indexOf(".php")<0) { $(this).addClass('sm2_button');} }); var btn = jQuery('<span class="btn-pressplay">&nbsp;</span>'); jQuery('.sm2_button').prepend(btn) });

编辑: 我还尝试了以下@ user3659034。我得到的错误是类型错误:undefined不是一个函数 console.log生成“一个#page-top”,所以看起来我正在尝试评估我需要排除的页面上的奇怪a。我从here获得了类型代码。

jQuery(document).ready(function(){ //edit NEB //jQuery('a[href$=".mp3"]').addClass('sm2_button'); jQuery("a").each(function(idx) { console.log (this); var attr = $(this).attr('href'); if (typeof attr !== typeof undefined && attr !== false) { if (jQuery(this).attr('href').indexOf(".mp3") > -1) { if (jQuery(this).attr('href').indexOf(".php") == -1) { jQuery(this).addClass('sm2_button'); } } } }); var btn = jQuery('<span class="btn-pressplay">&nbsp;</span>'); jQuery('.sm2_button').prepend(btn) }); 这是为pressplay-lite wordpress插件限制更改下载而不是mp3的mp3链接。

2 个答案:

答案 0 :(得分:0)

对锚标记jQuery .each()使用a并获取href attribute's值,然后检查其中是否存在.php或.mp3。

$("a").each(function(idx) {
    if ($(this).attr('href').indexOf(".mp3")  >  -1) {
        $(this).addClass('sm2_button');
    }
});

答案 1 :(得分:0)

您需要做的是使用属性选择器来说明href以.mp3attribute ends with selector - $ =)结尾的选择元素,但忽略href属性中具有.php的项目( attribute contains selector - * =)喜欢

jQuery('a[href$=".mp3"]').not('[href*=".php"]').addClass('sm2_button');