【问题标题】:Trying to retrieve part of URL with jQuery; it works, but a string isn't returned尝试使用 jQuery 检索部分 URL;它有效,但不返回字符串
【发布时间】:2013-07-07 14:02:46
【问题描述】:

背景信息:我正在设置一种在我的论坛中嵌入 SoundCloud 的 HTML5 小部件的方法。小部件根据其高度自行调整其内容。正如您在下面的 jsFiddle 示例中看到的那样,我进行了设置,以便当一个小部件悬停在上面时,它的高度从 166 像素扩展到 450 像素,这会触发小部件调整其内容。

我要解决的问题是所有 SoundCloud 小部件都折叠起来,无论它们是否属于设置/播放列表。如果它不是集合/播放列表的一部分,则将鼠标悬停在上面时会出现一个大的空白区域。

我注意到,如果声音是 set/playlist 的一部分,则 /sets/ 会出现在 URL 中。我正在尝试修改我的脚本,以便它检查该字符串的 URL。如果找到它,让小部件在悬停时展开;如果没有,请不要让它在悬停时展开。

目前我遇到了障碍。它有效,但搜索返回的是行中的位置,而不是我需要的字符串。我添加了一点代码来证明这一点:

http://jsfiddle.net/TYWUf/11/

没有额外代码的JS:

jQuery(document).ready(function () {

    var soundSrc = $(".soundCloudEmbed").attr("src");
    var isSet = (soundSrc).search('%' + '2Fsets' + '%' + '2F');

    $(".soundCloudEmbed").hover(
        function () {
            $(this).addClass("soundCloudHover");
        }, function () {
            $(this).removeClass("soundCloudHover");
    });
});

(如果我没有正确地问这个问题,请告诉我)

【问题讨论】:

    标签: javascript jquery string search


    【解决方案1】:

    看看这个,我想这就是你要找的东西:

    http://jsfiddle.net/dSX5g/

    jQuery(document).ready(function () {
    
        $('.soundCloudEmbed').each(function () {
            var soundSrc = $(this).attr("src");
            var isSet = (soundSrc).search('%' + '2Fsets' + '%' + '2F');
    
            if (isSet > -1) {
                $(this).hover(function () {
                    $(this).addClass("soundCloudHover");
                }, function () {
                    $(this).removeClass("soundCloudHover");
                });
            }
        });
    
    });
    

    每个嵌入的项目都需要单独评估。

    【讨论】:

    • 看起来您所做的设置是检查搜索返回的值是否大于 0(表示字符串存在)或不(表示不存在)。我因为没有想到这一点而自责。说真的,谢谢!到目前为止,您的解决方案似乎在我的论坛上运行良好。
    • 没问题。为了将来参考,如果您有一个“indexOf”类型的函数来搜索字符串中子字符串的位置,如果未找到子字符串,它将返回 -1。
    【解决方案2】:

    您手动将类设置为 html 属性,然后使用 JQuery 选择器展开该类中的任何内容。您应该首先遍历您的 iframe 并根据它是否是集合的一部分来设置不同的类。这样,JQuery 选择器只会扩展那些是集合的类。

    【讨论】:

      猜你喜欢
      • 2015-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      相关资源
      最近更新 更多