我是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 -->
如果stats.php
将返回这样的JSON对象:{ a : 3, b : 7 }
生成的HTML将是(每个对象属性将匹配调用插件的选择中的id
):
<span id="a" class="scalar">3</span>
<span id="b" class="scalar">7</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);