jQuery:将元素属性设置为.text()

时间:2012-06-06 20:37:30

标签: jquery knockout.js

我有一个span标记,如下所示:

<span class="myClass">Lorem ipsum</span>

我想为它添加一个引用innerText值的属性(对于javascript函数调用),我希望它看起来像这样:

<span class="myClass" data-bind="click: function(data, event) { myFunction('Lorem ipsum') }">Lorem ipsum</span>

我希望能够动态解析包含span myClass跨度的文本段落,并以编程方式添加属性。因此,如果我的innerText是“Sed”,myFunction的参数将是“Sed”。

我尝试了以下方法来制作:

jquery(container).find('.myClass').attr('data-bind', 'click: function(data, event) { myFunction(' + $(this).text() + ')}');

它不起作用。 (函数参数为空。尝试.html()输出“null”。)

有谁知道如何在jQuery中完成这样的事情?我认为我的问题是$(this)关键字,因为它没有指向相关对象。我不确定是否还有其他可以使用的关键字...

谢谢!

编辑:哎呀,我试图对我的代码进行一些模糊处理,并忘了在最后一行进行。抱歉有任何困惑。

3 个答案:

答案 0 :(得分:2)

您的代码不起作用,因为$(this)不是您的元素。

尝试:

jquery(container).find('.nonGlossaryKeyword').each(function(){
   $(this).attr('data-bind', 'click: function(data, event) { showNonGlossaryModal(' + $(this).text() + ')}');
});

在这种情况下,$(this)遍历所有.nonGlassorayKeyword元素,就像for循环一样。

答案 1 :(得分:0)

你的意思是:

jQuery(".myClass") // or $(".myClass")

而不是

jquery(container).find('.nonGlossaryKeyword')

答案 2 :(得分:0)

是的,此时关键字“this”指的是容器。我想你可以做到:

var spans = jQuery(container).find('span');  //all spans
jQuery.each(spans,function(i,ele){
     var text = jQuery(ele).text();
     jQuery(ele).attr('data-bind','click: function(data, event) { myFunction("'+text+'")}');
});