jQuery(this) 目標不是找到元素
jQuery(this) target isn't finding element
这怎么可能:
jQuery(this).closest("li").find("p").text();
但是当我把它放在函数中时,它不起作用:
jQuery.each(words, function(i, v) {
jQuery(this).closest("li").find("p").text();
});
我需要通过函数传递this
吗?
完整代码:
jQuery(document).ready(function() {
jQuery('.js-trigger-editb').bind("mouseup", function() {
// find the p tag that contains the content and split it
var words = jQuery(this).closest("li").find("p").text().split(" ");
// wrap words in p tag into span tags
jQuery.each(words, function(i, v) {
jQuery(this).closest("li").find("p").append(jQuery("<span>").text(v));
});
});
});
我想建议将链接保存到找到的"p"元素,不要每次都搜索它。
var p = jQuery(this).closest("li").find("p");
var words = p.text().split(" ");
jQuery.each(words, function(i, v) {
p.append(jQuery("<span>").text(v));
});
就像你在问题中提到的,函数内部this
的值是问题所在。在 .each()
的回调中,this
的值是被迭代数组中的当前项。
这样的事情应该有效:
var elem = this; // here, 'this' is the element. Store it.
jQuery.each(words, function(i, v) {
// use the stored element handle from 'elem'
jQuery(elem).closest("li").find("p").append(jQuery("<span>").text(v));
});
jQuery(this)
是对调用的 DOM 元素的引用。因此,当您在jQuery('.js-trigger-editb').bind("mouseup", function() {});
和jQuery.each(words, function(i, v) {});
中调用它时,它是不同的元素。
尝试将其保存在.each
之外。
尝试:
var $this= jQuery(this);
jQuery.each(words, function(i, v) {
$this.closest("li").find("p").append(jQuery("<span>").text(v));
});
相关文章:
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- jQuery:具有class但不具有$(this)的元素
- this.defaultValue 返回 select 元素的未定义
- jQuery(this) 目標不是找到元素
- 如何通过 id 获取“this”元素并查看是否选中
- 同一元素的 this.id 值在浏览器之间是不同的
- 将jQuery$(this)转换为原始元素
- 如何在jQuery中隐藏没有$this的父元素
- jQuery不使用“$(this)”返回必需的元素
- 如何选择 $(this) 之后的下一个元素
- Jquery从“this”内部的元素制作变量
- 在 JavaScript / jQuery 回调中使用“this”更改单击元素的文本
- “this”返回的是[对象窗口],而不是元素
- 仅处理 $(this) 元素
- 如何通过指定的元素而不是 $(this) 调用 jquery 单击方法
- 如何在 jQuery 中使用“this”的子元素作为选择器
- 如何避免“this”引用 DOM 元素,并引用对象
- 复选框传递元素this
- 如何改变元素"this"在jQuery
- 是否可以访问DOM元素'this'在jQuery插件的非函数参数参数中