Javascript 基本面向对象编程;jQuery-为什么我会得到TypeError?
这是我的基本代码: JS:Javascript 基本面向对象编程;jQuery-为什么我会得到TypeError?,javascript,jquery,oop,prototype,typeerror,Javascript,Jquery,Oop,Prototype,Typeerror,这是我的基本代码: JS: jQuery(函数($) { 函数MyTest(){} MyTest.prototype= { myMethod:function() { $(此)。追加(“”); } } $(文档).ready(函数() { var myTest1=新的MyTest(); $(“#anelement”)。单击(函数() { myTest1.myMethod(); }); }); }); HTML: 点击“anelement”,JS控制台返回: 类型错误:e未定义。。。jque
jQuery(函数($)
{
函数MyTest(){}
MyTest.prototype=
{
myMethod:function()
{
$(此)。追加(“”);
}
}
$(文档).ready(函数()
{
var myTest1=新的MyTest();
$(“#anelement”)。单击(函数()
{
myTest1.myMethod();
});
});
});
HTML:
点击“anelement”,JS控制台返回:
类型错误:e未定义。。。jquery.min.js(第5行)
…而且它没有附加“myId”-为什么
谢谢您需要以某种方式将单击的元素传递到您的方法中。以下是一种方法:
jQuery(function ($) {
function MyTest() {}
MyTest.prototype = {
myMethod: function (el) {
$(el).append("<div id='myId'></div>");
}
}
$(document).ready(function () {
var myTest1 = new MyTest();
$("#anelement").click(function () {
myTest1.myMethod(this);
});
});
});
jQuery(函数($){
函数MyTest(){}
MyTest.prototype={
myMethod:函数(el){
$(el).附加(“”);
}
}
$(文档).ready(函数(){
var myTest1=新的MyTest();
$(“#元素”)。单击(函数(){
myTest1.myMethod(this);
});
});
});
您还可以使用.call在给定的上下文中执行方法,但是您将失去对实例方法和变量的访问
jQuery(function ($) {
function MyTest() {}
MyTest.prototype = {
myMethod: function () {
$(this).append("<div id='myId'></div>");
}
}
$(document).ready(function () {
var myTest1 = new MyTest();
$("#anelement").click(function () {
myTest1.myMethod.call(this);
});
});
});
jQuery(函数($){
函数MyTest(){}
MyTest.prototype={
myMethod:函数(){
$(此)。追加(“”);
}
}
$(文档).ready(函数(){
var myTest1=新的MyTest();
$(“#元素”)。单击(函数(){
myTest1.myMethod.call(this);
});
});
});
或者干脆
jQuery(function ($) {
function MyTest() {}
MyTest.prototype = {
myMethod: function () {
$(this).append("<div id='myId'></div>");
}
}
$(document).ready(function () {
var myTest1 = new MyTest();
$("#anelement").click(myTest1.myMethod);
});
});
jQuery(函数($){
函数MyTest(){}
MyTest.prototype={
myMethod:函数(){
$(此)。追加(“”);
}
}
$(文档).ready(函数(){
var myTest1=新的MyTest();
$(“#anelement”)。单击(myTest1.myMethod);
});
});
在myMethod
中,$(此)
的上下文是什么?@AndrewPeacock我的目标是将myId附加到元素(单击).此
在myMethod内部不是DOM节点或jQuery对象,而是MyTest类的实例。您可以接受一个参数到myMethod
,然后代替$(此)
do$('#'+arg).append(…)编码>并将“#一个元素”
传递到myMethod()
。或者,我可能在这一点上弄错了,您可以执行myMethod($(this))
,然后执行arg.append(…)
@KevinB谢谢。那么,我应该如何编写一个附加元素的方法(使用jQuery)?它可以工作并且有意义;)谢谢你完整的回答。
jQuery(function ($) {
function MyTest() {}
MyTest.prototype = {
myMethod: function () {
$(this).append("<div id='myId'></div>");
}
}
$(document).ready(function () {
var myTest1 = new MyTest();
$("#anelement").click(function () {
myTest1.myMethod.call(this);
});
});
});
jQuery(function ($) {
function MyTest() {}
MyTest.prototype = {
myMethod: function () {
$(this).append("<div id='myId'></div>");
}
}
$(document).ready(function () {
var myTest1 = new MyTest();
$("#anelement").click(myTest1.myMethod);
});
});