我面对的原始问题是这样的:
$('#setting-box > div').change(function(){
// Would like to select current div's span child and do something
}
我进行了一些研究,发现了以下信息:如何获取$(this)选择器的子级?
这两个参数实际上对我有效
$('span', this).html($('input', this).val());
现在我的问题是,是否有任何方法来选择此span元素,
在$()中使用单个参数?(并且不使用诸如find(),child()等的方法)
就像,有什么事情/方法可以做$(this > childElement)
吗?
谢谢你的帮助
要直接回答您的问题,没有单一的参数方法可以只this
在jQuery中搜索元素的子级。这是因为jQuery的默认上下文是整个文档,因此要进行更改,除了选择器之外,您还必须使用一些其他代码。
此外,DOM元素本身(在this
您示例中的变量中)不能进入选择器,因为选择器是字符串,而DOM元素没有任何方法可以在选择器字符串中表达它。因此,您必须使用一个额外的参数来将选择器的搜索范围限定为小于文档的范围。
因此,为了限制选择器搜索的范围,您可以使用听起来似乎已经了解的选项:
$(this).find(selector) // any descendant
$(selector, this) // any descendant
$(this).children(selector) // only look at direct children
如果我需要任何后代,我自己更喜欢使用它,.find()
因为我认为代码更易读。因此,为满足您的特殊需要,我将使用以下代码:
var self = $(this);
self.find("span").html(self.find("input").val());
或者,如果只有直子:
var self = $(this);
self.children("span").html(self.children("input").val());
此外,您的.change()
代码应绑定到实际支持该事件的元素,该元素将类似于a<select>
或<input>
not normal <div>
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句