我有一个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)
关键字,因为它没有指向相关对象。我不确定是否还有其他可以使用的关键字...
谢谢!
编辑:哎呀,我试图对我的代码进行一些模糊处理,并忘了在最后一行进行。抱歉有任何困惑。
答案 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+'")}');
});