jQuery可以';在插件中找不到()吗?
我对jQuery非常陌生,我正在开发一个插件(供我自己使用),用于使用ajax调用返回的内容设置DOM元素jQuery可以';在插件中找不到()吗?,jquery,jquery-plugins,jquery-selectors,Jquery,Jquery Plugins,Jquery Selectors,我对jQuery非常陌生,我正在开发一个插件(供我自己使用),用于使用ajax调用返回的内容设置DOM元素html()。例如: <span id="a" class="scalar">?</span> <span id="b" class="scalar">?</span> <span id="c" class="scalar">?</span><!-- this will not be updated -->
html()
。例如:
<span id="a" class="scalar">?</span>
<span id="b" class="scalar">?</span>
<span id="c" class="scalar">?</span><!-- this will not be updated -->
这是插件调用和定义问题是:为什么find()
不能正确选择要更新的元素
<script type="text/javascript">
$(document).ready(function() {
$('.scalar').scalar({ url : '../REST/stats.php' });
});
</script>
(function($) {
$.fn.scalar = function(options) {
var opt = $.extend({
url : 'REST/stats.php',
type : 'POST',
context: this,
dataTypeString : 'json'
}, options);
$.ajax($.extend(opt, {
success : function(obj) {
for(k in obj) {
if(!obj.hasOwnProperty(k)) continue;
console.log(this.find('#' + k));
}
}
}));
return this.each();
};
})(jQuery);
$(文档).ready(函数(){
$('.scalar').scalar({url:'../REST/stats.php'});
});
(函数($){
$.fn.scalar=函数(选项){
var opt=$.extend({
url:'REST/stats.php',
键入:“POST”,
背景:这,,
dataTypeString:'json'
},选项);
$.ajax($.extend(opt{
成功:功能(obj){
用于(obj中的k){
如果(!obj.hasOwnProperty(k))继续;
console.log(this.find('#'+k));
}
}
}));
返回此.each();
};
})(jQuery);
因为查找子元素,而您要查找的元素不是子元素(它们都是彼此的兄弟)。改用:
这将是一个包装一组DOM元素的jQuery对象。除非这些元素中的一个或多个包含一个具有您正在使用find
查找的id
的子元素,否则它将不起作用。您需要查看元素本身,这就是filter
所做的
<script type="text/javascript">
$(document).ready(function() {
$('.scalar').scalar({ url : '../REST/stats.php' });
});
</script>
(function($) {
$.fn.scalar = function(options) {
var opt = $.extend({
url : 'REST/stats.php',
type : 'POST',
context: this,
dataTypeString : 'json'
}, options);
$.ajax($.extend(opt, {
success : function(obj) {
for(k in obj) {
if(!obj.hasOwnProperty(k)) continue;
console.log(this.find('#' + k));
}
}
}));
return this.each();
};
})(jQuery);
console.log(this.filter('#' + k));