jQuery代码在Firebug中工作,但不是单独使用

时间:2010-06-13 22:38:57

标签: javascript jquery dom firebug

我现在正处理一个问题的大爆炸。我试图用jQuery从“响应”到“评论”的最后更改链接的哈希标记。我有一个简单的脚本应该这样做,但它不起作用。链接不会改变。但是,Firebug没有显示任何错误,当我在Firebug的控制台中运行代码时,它就像我想要的那样工作。为什么这不能独立工作?有没有人有解决方案,我对这个问题很敏感。

(function ($) { 
  $(document).ready(function() {
    $("a[href$='respond']").each(function() { 
        $(this).attr("href", $(this).attr('href').replace("respond", "comments"));
    });
  });
})(jQuery.noConflict());

非常感谢,我知道这可能是一个痛苦的考验,但我真的很感激。

3 个答案:

答案 0 :(得分:5)

您的代码应该正常工作,但您的脚本标记格式不正确。您有text/javscript而不是text/javascript。此外,您可以稍微优化您的代码:

<script type="text/javascript">
  jQuery(document).ready(function($){
    $("a[href$='respond']").attr("href", function(index, attr){
      return attr.replace("respond", "comments");
    });
  }).noConflict();
</script>

答案 1 :(得分:4)

您使用$(document).load()代替$(document).ready()

(function ($) {
//---------------v
    $(document).load(function() {    
        $("a[href$='respond']").each(function() {
            $(this).attr("href", $(this).attr('href').replace("respond", "comments"));
        });  
    });
})(jQuery.noConflict());

答案 2 :(得分:0)

为什么不呢:

jQuery(function($) {
  $("a[href$='respond']").each(function() { 
    $(this).attr("href", $(this).attr('href').replace("respond", "comments"));
  });
});

如果将函数传递给jQuery构造函数,它会将其添加到DOM Ready侦听器并自动将其作为参数传递。