jQuery对象和元素

时间:2015-10-31 20:40:13

标签: javascript jquery types

我知道我之前已经看到了对类似问题的一个非常直截了当的答案,但我还没能记住或找到它,所以提前道歉。

我对编码并不陌生,但我没有接受过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对象吗?我意识到,并非我的函数返回的所有对象实际上都有值可以返回,但我不明白如何区分。

谢谢!

2 个答案:

答案 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());
    }
}