0

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

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

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

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

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

我尝试了以下方法来产生这个:

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

它没有用。(函数参数为空。尝试.html()输出“null”。)

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

谢谢!

编辑:哎呀,我试图混淆我的代码,并忘记在最后一行做。很抱歉有任何混淆。

4

3 回答 3

2

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

尝试:

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

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

于 2012-06-06T20:42:27.967 回答
0

你的意思是:

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

代替

jquery(container).find('.nonGlossaryKeyword')
于 2012-06-06T20:41:22.670 回答
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+'")}');
});
于 2012-06-06T20:50:57.167 回答