0

jquery 新手。我已经在 javascript 中运行了它,但正在切换到 jquery,所以我可以使用.each. 是否有一些特殊规则阻止我.replace在 jQuerys中使用 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,"_");

})

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

4

5 回答 5

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,"_");
});
于 2012-05-14T18:05:43.960 回答
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 只是一个库。

于 2012-05-14T18:05:01.530 回答
1

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

更新为使用 .text() 函数来设置全部替换spaces_

演示

$('.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, "_");
于 2012-05-14T18:05:12.527 回答
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] 只要数字不是负数就完全有效,这不太可能。

于 2012-05-14T18:14:39.150 回答
0

尝试这个:

$.each(jse_article_titles, function() {

    jse_article_title = $(this).html();

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

})
于 2012-05-14T18:06:40.457 回答