在$ .each中使用.replace

时间:2012-05-14 18:03:40

标签: javascript jquery replace each

jquery新手。我已经在javascript中运行了这个但是我切换到jquery所以我可以使用.each。是否有一些特殊规则阻止我在jQuerys .replace中使用JavaScripts .each

    var jse_sanitized_title = "";
    var jse_article_title = "";

    var jse_article_titles = $('.jse_article_title');

    $.each(jse_article_titles, function(i) {

    jse_article_title = jse_article_titles[i].innerHTML;

            //error for this says jse_article_titles[i].replace is not a function
    jse_sanitized_title = jse_article_titles[i].replace(/ /g,"_");

})

编辑:替换的目的是用下划线替换空格。

5 个答案:

答案 0 :(得分:3)

$.each(jse_article_titles, function() {
    jse_article_title = this.innerHTML;
    jse_sanitized_title = jse_article_title.replace(/ /g,"_");
});

更新后,您似乎想要执行以下操作:

$('.jse_article_title').each(function(){
    this.innerHTML = this.innerHTML.replace(/ /g,"_");
});

jQuery有另一种方法:

$('.jse_article_title').html(function(index, old){
    return old.innerHTML.replace(/ /g,"_");
});

答案 1 :(得分:2)

大概你的意思是:

    $.each(jse_article_titles, function(i) {

    jse_article_title = jse_article_titles[i].innerHTML;

            //error for this says jse_article_titles[i].replace is not a function
    jse_sanitized_title = jse_article_title .replace(/ /g,"_");
    jse_article_titles[i].innerHTML = jse_sanitized_title;

})

如果您尚未声明jse_article_title,请在此处输入var,例如:

var jse_article_title = jse_article_titles[i].innerHTML;

请注意,您必须在最后重新分配它。最后,没有像这样的特殊规则。 jQuery只是一个库。

答案 2 :(得分:1)

  
    

编辑:替换的目的是用下划线替换空格。

  

更新为使用.text()函数设置将所有spaces替换为_

DEMO

$('.jse_article_title').text(function () {
    return this.innerHTML.replace(/ /g, '_');
});

可能你需要

jse_sanitized_title = jse_article_title.replace(/ /g,"_"); 
//using the jse_article_title

jse_sanitized_title = jse_article_titles[i].innerHTML.replace(/ /g,"_");

或使用jQuery,

jse_sanitized_title = $(this).text().replace(/ /g, "_");

答案 3 :(得分:0)

试试这个:

$.each(jse_article_titles, function() {

    jse_article_title = $(this).html();

    jse_sanitized_title = jse_article_title.replace(/ /g,"_");

})

答案 4 :(得分:0)

要按照您尝试的方式(使用innerHTML)进行操作,您需要使用get()引用该节点...您需要执行此操作:

jse_article_titles.get(i).innerHTML

但是,你应该能够缩短一点。

$('.jse_article_title').each( function() {
    $(this).html( $(this).html().replace(/ /g,"_") );
});

// or

$('.jse_article_title').each( function() {
    this.innerHTML = this.innerHTML.replace(/ /g,"_");
});

// whichever floats your boat

[编辑]:抱歉,我错了需要.get()。只要数字不是负数,jse_articles_titles [i]就完全有效,这是不可能的。