7

我只是想操纵#contentdiv 中的元素,但$('#content')似乎不起作用,但在其他地方却可以!我的相关代码很简单:

HTML

<body>
  <input type='button' value='Save design' id='save'  />
  <div id="content" style="height: 200px; width:600px;border: 1px solid black;" class='whatev'></div>
</body>

脚本

$(document).ready(function(){   
   $('#save').click(function(e){
     alert( document.getElementById('content').id); // this works!
     alert($("#content").length); // this works! it outputs "1"
     alert($("#content").id); // this does NOT work - undefined, why?
     //end save function
   });

    $('#content').click(function(e){ 
       // do stuff // ALL of this works!
    });
});

这就对了。如果您注意到,它确实在某些地方有效(绑定到它的整个点击功能非常好),但在它不起作用的地方,它奇怪地仍然存在,因为length = 1. 我也尝试使用上下文来搜索 div,以防万一,(使用$('#content','body')),但没有用。

4

8 回答 8

16

DOM 元素和包含 DOM 元素的 jQuery 选择之间是有区别的。jQuery 选择是 DOM 对象的包装器,使其更易于使用。它没有id属性,但 DOM 元素有。另一方面,jQuery 确实提供了一种使用以下方法访问元素属性的attr方法:

document.getElementById('content').id // access the id property of a DOM element
$('#content').attr('id')              // use jQuery to select the element and access the property

然而,该length属性是由一个 jQuery 选择提供的,这就是为什么它对你很有效。

于 2012-08-28T11:41:03.260 回答
10

id是一个普通的 DOM 属性/属性,适用于普通的 DOM 对象,而不是 jQuery 对象。

您可以在 jQuery 中执行此操作:

$("#content").attr('id');

这等于:

document.getElementById('content').id

或者

$("#content")[0].id; //[0] gets the first DOM object in the collection
于 2012-08-28T11:39:44.430 回答
3

试试这个

$("#content").attr("id")
于 2012-08-28T11:39:47.883 回答
3

$("#content")返回包含 id 的 elmenent 的 jQuery 集合contentid是元素的属性,而不是集合的属性。您可以通过将方法链接到集合中来获取元素的 ID attr()

alert($("#content").attr('id'));

或者,当each收集集合时,传递给的函数内部each this将是实际元素,因此您可以访问this.id

$("#content").each(function () {alert(this.id);});
于 2012-08-28T11:41:50.053 回答
2

对于这个问题,您应该直接访问 jsfiddle,并访问 jquery 文档了解如何获取 html 元素的属性 -> http://api.jquery.com/attr/

jQuery 选择器对象本身没有属性id。你必须使用.attr('id')函数。

正如你在这个 jsfiddle 中看到的那样,我修复了这个问题,其他一切正常:http: //jsfiddle.net/AdtrX/1/

于 2012-08-28T11:43:26.303 回答
2

总记得!

在 jQuery 中当你想访问某些attribute被选中的元素时,你使用jQuery's .attr()API。

现在你说这个, document.getElementById("content").idWorks,这行的等效jQuery声明是

$("#content").attr('id');

用于选择属性使用.attr() 用于操作样式/css 使用.css()

您还可以使用更改所选元素的 CSS 属性.attr()

.attr('style','your new style');

于 2012-08-28T11:48:31.267 回答
2

您可以使用 .attr("id") 函数获取 id。使用此代码: $("#content").attr("id");

于 2012-08-28T12:04:25.610 回答
2

是什么让我进入了这个页面

我有这个带有 id 的 divLING_a_00224.s03

<div id="LING_a_00224.s03" ></div> 

当我使用 jquery 选择器来获取它时

$("#LING_a_00224.s03")

我得到了not element(jquery 选择器不工作)

那是因为dot (.)the id

jquery将interpret它作为所有元素id="LING_a_00224" and class="s03",而不是所有元素id="LING_a_00224.s03"

所以请确保 id 选择器不包含像 ( .)这样的 jquery 选择器符号

或者如果你don't have control超过元素 ids,你可以做

selector=document.getElementById("LING_a_00224.s03");//JQuery selector sometimes fails because id may contains dot on it like #fn12.e2e
$(selector).jqueryFunction()// wrap the JavaScript object into $() to convert it to jquery object

希望这对你有帮助

于 2017-06-04T07:34:18.693 回答