Javascript 如何在jquery处理程序中找到单击的元素?
如果jquery中的on click方法中传递了一个参数,我将尝试对clicked元素执行一个特定的操作。当我尝试访问它时,它引用的是整个窗口,而不是单击的元素。如何访问处理程序中单击的元素 以下是我使用的代码:Javascript 如何在jquery处理程序中找到单击的元素?,javascript,jquery,html,javascript-events,Javascript,Jquery,Html,Javascript Events,如果jquery中的on click方法中传递了一个参数,我将尝试对clicked元素执行一个特定的操作。当我尝试访问它时,它引用的是整个窗口,而不是单击的元素。如何访问处理程序中单击的元素 以下是我使用的代码: var myfunction = function(action) { var content; var $this = $(this); if(action === "one") { $(".output").text("clicked on one"); $this
var myfunction = function(action) {
var content;
var $this = $(this);
if(action === "one") {
$(".output").text("clicked on one");
$this.addClass("one");
}
if(action === "two") {
$(".output").text("clicked on two");
$this.addClass("two");
}
};
$("#button").on("click", function(event) {
myfunction("one");
});
$("#button2").on("click", function(event) {
myfunction("two");
});
我在jsbin上建立了一个示例。任何帮助都将不胜感激。您可以使用:
或者将操作作为属性存储在元素上,直接绑定处理程序并查询属性
var myfunction = function() {
var content;
var $this = $(this);
var action = $this.attr('data-action');
if (action === "one") {
$(".output").text("clicked on one");
$this.addClass("one");
} else if (action === "two") {
$(".output").text("clicked on two");
$this.addClass("two");
}
};
$("#button2").on("click", myfunction);
这是指函数所属的对象,在您的情况下,函数属于窗口对象或全局对象,“this”关键字的行为因您使用函数的方式而异,如果您将其用作构造函数,例如,使用新关键字“this”将绑定到正在构造的新对象,当函数用作事件处理程序时,它将被设置为事件元素,该元素是从中触发事件的元素。 有关更多信息,请参阅 您需要更改代码并执行以下操作:
$(".button").on("click",function(){
var $this = $(this) //refers to the event it was fired from (button object)
$(".output").text("You clicked on "+$this.text());
});
我使用类而不是ID来定位任何单击的按钮
JSFIDLE中的一个示例:有几种方法可以做到这一点 JQUERY方式: 在jquery click事件处理程序中,您拥有事件对象。它有一个名为target的属性,这就是您要查找的 更改此:$this.addClassone 对此:$event.target.addClassone 您也可以这样做:event.target.className=one 两个人也一样显然 普通方式: 您只需传入一个表示单击元素的额外参数
var myfunction = function(action, element) {
var content;
if(action === "one") {
$(".output").text("clicked on one");
$(element).addClass("one");
// or event.target.className = "one"
}
if(action === "two") {
$(".output").text("clicked on two");
$(element).addClass("two");
// or event.target.className = "two"
}
};
$("#button").on("click", function(event) {
myfunction("one", this);
});
$("#button2").on("click", function(event) {
myfunction("two", this);
});
@迈克:很高兴听你这么说……让我打个勾,波洛拉:-
var myfunction = function(action, element) {
var content;
if(action === "one") {
$(".output").text("clicked on one");
$(element).addClass("one");
// or event.target.className = "one"
}
if(action === "two") {
$(".output").text("clicked on two");
$(element).addClass("two");
// or event.target.className = "two"
}
};
$("#button").on("click", function(event) {
myfunction("one", this);
});
$("#button2").on("click", function(event) {
myfunction("two", this);
});