0

我有一些用 class="tab" 定义的 html 元素。

在我的 jquery 文件中,我定义了以下函数:

  $('.tab').mouseleave( function() {
    alert($(this).name);
  });

当我触发 mouseleave 时,对于名为“Contact”的类“tab”的元素,我确实收到了警报 - 但它显示“未定义”。我期待看到“联系”。

$(this) 给了我什么 - 它实际上给了我 DOM 元素吗?

注意。最终,我希望能够计算出鼠标离开元素的哪一侧(北、南、东或西)。所以我正在做这个警报,以确保我实际上可以访问该元素的宽度和高度。到目前为止,我似乎无法访问该信息。

4

8 回答 8

3

name是一个原生 javascript 方法,你正在使用$(this)它,它是一个 jQuery 对象,而不是原生 DOM 元素,那就是this

$('.tab').mouseleave( function() {
   alert(this.name);
});​

小提琴

于 2012-07-28T13:22:50.077 回答
1
     $('.tab').mouseleave( function() {
    alert($(this).attr('name'));
  });
于 2012-07-28T13:20:59.677 回答
1

$(this)给你一个包装原生 DOM 元素的 jQuery 对象。

this是您寻找的 DOM 元素。

在这里您可以找到更全面的描述。

于 2012-07-28T13:19:20.987 回答
1

名字是一个属性,对吧?所以检查 $(this).attr('name')

于 2012-07-28T13:19:57.443 回答
1

$(this)将为您提供 JQuery 对象。

this为您提供 DOM 元素。

$(this).prop('name')如果该 HTML 元素支持“名称”属性,您可以通过调用来获取名称。

“name”属性目前仅支持表单元素(input、select、textarea、form);当 POST 动词发送到服务器时发送到服务器的名称-值对的“名称”部分(即,您使用“POST”方法发布表单)。

进一步阅读:

http://forum.jquery.com/topic/please-explain-attr-vs-prop-change-in-1-6

.prop() 与 .attr()

http://timmywillison.com/2011/When-to-use-.attr()-and-.prop().html

于 2012-07-28T13:19:57.363 回答
1

jQuery 允许您像这样获取宽度和高度:

$(this).height(); //is the computed height eg. 200 without the dimension

对于您的特定代码示例,请尝试$(this).prop('name');$(this).attr('name'); //now deprecated

foo将从<input name="foo" />

如果您的元素具有 name 属性,您也可以尝试this.name,该属性只应用于input元素。但是,如果您没有该属性,它可能会返回 undefined 并引发错误。

$(this)是一个 jQuery 对象,其中包含 DOM 元素。this是直接的DOM元素。

于 2012-07-28T13:19:57.643 回答
1

您正在使用 jQuery 对象、使用attrprop函数来获取属性值:

$('.tab').mouseleave( function() {
    // either should work
    alert($(this).attr('name'));
    alert($(this).prop('name'));
});
于 2012-07-28T13:19:57.997 回答
0

这是因为 $ 给出了一个包装元素的数组。因此 $(this) 将是一个包含一个元素的数组。$(this).attr("name") 会给你名字,因为 attr 知道它是一个数组。如果您愿意,可以使用 $(this)[0].name 或简单地使用 this.name

于 2012-07-28T13:38:46.087 回答