2

给定以下代码:

$(div.now span).text('now');
$(div.30days span).text('30days');
$(div.60days span).text('60days');

如果我想缩短时间,这似乎是合乎逻辑的事情,如下所示:

$('span', 'div.now, div.30days, div.60days').text(some text);

现在,在缩短的版本中,我想将文本设置为类名的文本,但似乎不知道该怎么做。有任何想法吗?我意识到这不是一件理想的事情,如果你愿意的话,它只是一个 JQuery 实验。

4

4 回答 4

3

尝试以下操作:

$("div span").each(function(){
  $(this).text($(this).closest('div').attr('class'))
})​

演示

于 2012-08-04T03:44:10.747 回答
0

在参数中使用函数而不是字符串text

$('span', 'div.now, div.30days, div.60days').text(function() {
    return $(this).closest('div.now, div.30days, div.60days').attr("class");
});

以这种方式调用它,this绑定到当前元素 (a span),因此您只需要检索其父级最近的祖先 div 的类并返回它。

jsFiddle的工作示例。请注意,即使有嵌套的 div,它也可以工作(因为它使用与closest原始上下文相同的选择器)。

于 2012-08-04T03:43:20.763 回答
0

这就是你想要的?

$('div.now', 'div.30days', 'div.60days').each(function(){
  $(this).text(this.className); 
});

​</p>

于 2012-08-04T03:44:13.183 回答
0

不需要循环使用each.

最好的方法如下。

$('div span').text(function() {
    return this.parentNode.className;
});

演示

于 2012-08-04T04:34:14.613 回答