为什么会这样:
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));
});
});
});
答案 0 :(得分:3)
我建议将链接保存到找到的“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));
});
答案 1 :(得分:1)
就像你在问题中提到的那样,函数内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));
});
答案 2 :(得分:1)
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));
});