我知道我之前已经看到了对类似问题的一个非常直截了当的答案,但我还没能记住或找到它,所以提前道歉。
我对编码并不陌生,但我没有接受过Javascript / jQuery的正式培训。我使用的其他所有东西都是严格打字的,所以我仍然在努力解决JS的打字方式。我有一个函数,每当特定类的子进行更改时都会触发(我为Sharepoint写这个函数,所以有一些必须要解决的问题。)
为什么我这样写:
$(".listen *").change(function(event) {
var element = event.target;
if (element.title == 'Workstation')) {
alert(element.val());
}
}
我收到一个错误,即.val()不是函数,我必须改为编写
$(".listen *").change(function(event) {
var element = event.target;
if (element.title == 'Workstation')) {
alert($('#' + element.id).val());
}
}
"元素"的对象有什么区别?是和使用id检索的对象?他们都是jQuery对象吗?我意识到,并非我的函数返回的所有对象实际上都有值可以返回,但我不明白如何区分。
谢谢!
答案 0 :(得分:1)
在你的第一个代码块中,'element'变量不是jQuery对象,它是一个DOM对象。没有为DOM对象定义.val()方法。它仅为jQuery对象定义。
在第二个代码块中,$('#'。element.id)返回一个确定了val()方法的jQuery对象。
所以回答你的问题,不,它们不是两个jQuery对象,只有第二个是。
答案 1 :(得分:0)
你必须从你的dom(event.target
)那里制作jQuery对象;
$(".listen *").change(function(event) {
var element = $(event.target);
if (element.attr('title') == 'Workstation')) {
alert(element.val());
}
}
然后您可以根据需要使用jQuery对象。顺便说一句,如果你想捕捉更改的元素,可以使用$(this)
而不是$(event.target)
。
$(".listen *").change(function(event) {
var element = $(this);
if (element.attr('title') == 'Workstation')) {
alert(element.val());
}
}