【问题标题】:jQuery: setting an element attribute to .text()jQuery:将元素属性设置为 .text()
【发布时间】:2012-06-07 04:52:58
【问题描述】:

我有一个如下所示的 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) 关键字,因为它没有指向有问题的对象。我不确定是否还有其他关键字可以使用...

谢谢!

编辑:哎呀,我试图混淆我的代码,但忘了在最后一行做。如有任何混淆,请见谅。

【问题讨论】:

  • data- 属性应该包含静态数据,而不是动态函数。此外,为什么要添加代码来引用 innerText 值,而不仅仅是...引用 innerText 值?
  • nonGlossaryKeyword 类指向什么?
  • @Larry - 见编辑。我正在开发一个公司项目,我认为通用化我的代码是明智之举,但我忘了在最后一行这样做。
  • @Blazemonger - 我正在使用 knockout.js 进行数据绑定;就它而言,点击绑定是静态的。但是,如果有更好的方法来引用 innerText 而不使用此方法,我会很高兴听到它。
  • 这完全取决于你想对文本做什么。我不熟悉淘汰赛,但将它与 jQuery 混合可能是不必要的。在我能想到的任何情况下,最好创建一个通用的$('.myClass').on('click',function() {...}); 事件处理程序,它将检索$(this).text() 并根据需要对其进行处理。

标签: jquery knockout.js


【解决方案1】:

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

尝试:

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

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

【讨论】:

  • 这非常有效。谢谢!我需要复习一下我的 jQuery。
【解决方案2】:

你的意思是:

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

而不是

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

【讨论】:

  • 这实际上并没有回答他的问题,而且,容器很可能是一个有效的 jquery 元素。
  • @seth flowers 我的意思是后者 - 很抱歉造成混淆,但它是更大代码 sn-p 的一部分。 (我正在尝试解析一个字符串,并且必须将其添加到一个 div 容器中以进行 jQuery 解析,因此是容器。)
【解决方案3】:

是的,此时的关键字'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+'")}');
});

【讨论】:

    猜你喜欢
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多