Javascript 使用在';这';在jQuery.on(调用
考虑以下JSFIDLE: 尖叫者 jQuery.fn.scream=函数(){ 如果(这个.hasClass(“尖叫”)){ 警惕(“尖叫”); } 否则{ 警报(“shhhh”); } } $(函数(){ $('#MyDiv')。尖叫(); $(#MyDiv')。在(“点击”,尖叫); });Javascript 使用在';这';在jQuery.on(调用,javascript,jquery,function,events,this,Javascript,Jquery,Function,Events,This,考虑以下JSFIDLE: 尖叫者 jQuery.fn.scream=函数(){ 如果(这个.hasClass(“尖叫”)){ 警惕(“尖叫”); } 否则{ 警报(“shhhh”); } } $(函数(){ $('#MyDiv')。尖叫(); $(#MyDiv')。在(“点击”,尖叫); }); 我正在尝试将div的click事件绑定到“this”对象上的JQuery函数。我知道我可以通过更改函数并使其将对象作为变量来实现这一点,但我希望保持函数签名不变,并使其在“this”对象上内部工作。如
我正在尝试将div的click事件绑定到“this”对象上的JQuery函数。我知道我可以通过更改函数并使其将对象作为变量来实现这一点,但我希望保持函数签名不变,并使其在“this”对象上内部工作。如何实现这一点?您没有
尖叫函数但是您拥有的是一个jQuery.fn.scream
函数,因为您已经将它附加到了该名称空间
当然,您可以将该函数用作事件处理程序中的引用,但是this
中传递的元素将是本机DOM元素,并且必须包装在jQuery中
我无法理解你为什么会这样做,但我想:
jQuery.fn.scream = function() {
if( $(this).hasClass("scream") ) {
alert("scream");
}
else {
alert("shhhh");
}
}
$(function () {
$('#MyDiv').scream();
$('#MyDiv').on( "click", jQuery.fn.scream);
});
您没有cream
函数,但是您有一个jQuery.fn.cream
函数,因为您已经将它附加到了该名称空间
当然,您可以将该函数用作事件处理程序中的引用,但是this
中传递的元素将是本机DOM元素,并且必须包装在jQuery中
我无法理解你为什么会这样做,但我想:
jQuery.fn.scream = function() {
if( $(this).hasClass("scream") ) {
alert("scream");
}
else {
alert("shhhh");
}
}
$(function () {
$('#MyDiv').scream();
$('#MyDiv').on( "click", jQuery.fn.scream);
});
您没有cream
函数,但是您有一个jQuery.fn.cream
函数,因为您已经将它附加到了该名称空间
当然,您可以将该函数用作事件处理程序中的引用,但是this
中传递的元素将是本机DOM元素,并且必须包装在jQuery中
我无法理解你为什么会这样做,但我想:
jQuery.fn.scream = function() {
if( $(this).hasClass("scream") ) {
alert("scream");
}
else {
alert("shhhh");
}
}
$(function () {
$('#MyDiv').scream();
$('#MyDiv').on( "click", jQuery.fn.scream);
});
您没有cream
函数,但是您有一个jQuery.fn.cream
函数,因为您已经将它附加到了该名称空间
当然,您可以将该函数用作事件处理程序中的引用,但是this
中传递的元素将是本机DOM元素,并且必须包装在jQuery中
我无法理解你为什么会这样做,但我想:
jQuery.fn.scream = function() {
if( $(this).hasClass("scream") ) {
alert("scream");
}
else {
alert("shhhh");
}
}
$(function () {
$('#MyDiv').scream();
$('#MyDiv').on( "click", jQuery.fn.scream);
});
将此更改为$(此)
,jQuery将能够使用它。将此更改为$(此)
,jQuery将能够使用它。将此更改为$(此)
,jQuery将能够使用它。将此更改为$(此)
,jQuery将能够使用它。您有以下代码
$('#MyDiv').on( "click", scream);
但是在当前范围中没有定义scream
函数,而是jQuery.fn.scream
。而且,hasClass
是一个jQuery
方法,您需要使用$(this).hasClass(“scream”)
而不是this.hasClass(“cream”)
,因为此
不是jQuery
对象,而是$(此)
是jQuery
对象
您有以下代码
$('#MyDiv').on( "click", scream);
但是在当前范围中没有定义scream
函数,而是jQuery.fn.scream
。而且,hasClass
是一个jQuery
方法,您需要使用$(this).hasClass(“scream”)
而不是this.hasClass(“cream”)
,因为此
不是jQuery
对象,而是$(此)
是jQuery
对象
您有以下代码
$('#MyDiv').on( "click", scream);
但是在当前范围中没有定义scream
函数,而是jQuery.fn.scream
。而且,hasClass
是一个jQuery
方法,您需要使用$(this).hasClass(“scream”)
而不是this.hasClass(“cream”)
,因为此
不是jQuery
对象,而是$(此)
是jQuery
对象
您有以下代码
$('#MyDiv').on( "click", scream);
但是在当前范围中没有定义scream
函数,而是jQuery.fn.scream
。而且,hasClass
是一个jQuery
方法,您需要使用$(this).hasClass(“scream”)
而不是this.hasClass(“cream”)
,因为此
不是jQuery
对象,而是$(此)
是jQuery
对象
属性fn
是jQuery对象的原型,用于向jQuery添加插件
当然,您可以向原型中添加一个函数,然后将其用作事件的回调,但这不是目的,通常您只会使用一个常规函数
请注意,调用事件处理程序时引用的是元素,而不是包含该元素的jQuery对象,因此需要使用$(this)
在元素上使用jQuery方法:
function scream() {
if($(this).hasClass("scream")) {
alert("scream");
} else {
alert("shhhh");
}
}
$(function () {
$('#MyDiv').on( "click", scream);
});
如果要制作插件,实现通常如下所示:
jQuery.fn.scream = function() {
return this.click(function() {
if($(this).hasClass("scream")) {
alert("scream");
} else {
alert("shhhh");
}
});
}
$(function () {
$('#MyDiv').scream();
});
fn
属性是jQuery对象的原型,用于向jQuery添加插件
当然,您可以向原型中添加一个函数,然后将其用作事件的回调,但这不是目的,通常您只会使用一个常规函数
请注意,调用事件处理程序时引用的是元素,而不是包含该元素的jQuery对象,因此需要使用$(this)
在元素上使用jQuery方法:
function scream() {
if($(this).hasClass("scream")) {
alert("scream");
} else {
alert("shhhh");
}
}
$(function () {
$('#MyDiv').on( "click", scream);
});
如果要制作插件,实现通常如下所示:
jQuery.fn.scream = function() {
return this.click(function() {
if($(this).hasClass("scream")) {
alert("scream");
} else {
alert("shhhh");
}
});
}
$(function () {
$('#MyDiv').scream();
});
fn
属性是jQuery对象的原型,用于向jQuery添加插件
当然,您可以向原型中添加一个函数,然后将其用作事件的回调,但这不是目的,也不是目的