使用jQuery的插件架构,我在我的js文件中有一行代码,它将一个简单的“div”元素附加到文本框中。任务看起来很简单,但我无法弄清楚我哪里出错了。
来自我的html文件的片段
<div style="margin-top:50px">
Search: <input id="searchbox" type="text" /><br />
</div>
...
<script type="text/javascript">
$(document).ready(function() {
$('#searchbox').testplugin();
})
</script>
这是来自testplugin.js文件
init : function(options)
{
// some initialization
// iterate through all the jquery objects
return this.each(function() {
$(this).append('<div>Sample Text</div>');
});
}
此时,我确信$(this)引用了正确的对象(我已尝试提醒id)。此外,当我尝试在Firefox中执行“查看源代码”时,我也会看到新添加的div(但不会在实际的GUI中)。但是,在Internet Explorer中,我收到“意外调用方法或属性访问”错误。
我在这里做错了什么?或者我应该怎么做才能使这项工作?
谢谢! 欧文
答案 0 :(得分:2)
尝试做.val('test');而不是append()&amp;你可能会遇到工作代码,同样适用于.addClass('yourcssclass');或任何其他“合法”的DOM操作。
答案 1 :(得分:1)
init : function(options)
{
// some initialization
// iterate through all the jquery objects
return this.each(function() {
$(this).val('Sample Text');
});
}
如果您尝试在文本框“示例文本”中创建文本,此代码将有所帮助
您的插件仍可用于div
,a
等元素......
答案 2 :(得分:0)
修改我的代码以使用after()而不是append()
init : function(options)
{
// some initialization
// iterate through all the jquery objects
return this.each(function() {
$(this).after('<div>Sample Text</div>');
});
}