我只是想操纵#content div中的元素,但$('#content')
似乎不起作用,但在其他地方却有效!我的相关代码非常简单:
<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')
),但没有用。
答案 0 :(得分:12)
DOM元素和包含DOM元素的jQuery选择之间存在差异。 jQuery选择是DOM对象的包装,使其更易于使用。它没有id
属性,但DOM元素有。{1}}属性。另一方面,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选择提供的,这就是为什么它适用于你。
答案 1 :(得分:9)
id
是一个普通的DOM属性/属性,可以使用普通的DOM对象,而不是jQuery对象。
您可以在jQuery中执行此操作:
$("#content").attr('id');
等于:
document.getElementById('content').id
或
$("#content")[0].id; //[0] gets the first DOM object in the collection
答案 2 :(得分:3)
试试这个
$("#content").attr("id")
答案 3 :(得分:3)
$("#content")
返回包含标识为content
的elmenent的jQuery集合。 id
是元素的属性,而不是集合的属性。您可以通过将attr()
方法链接到集合中来获取元素的ID:
alert($("#content").attr('id'));
或者,当each
集合时,传递给each
this
的函数内部将是实际元素,因此您可以访问this.id
$("#content").each(function () {alert(this.id);});
答案 4 :(得分:2)
对于这个问题,您应该直接使用jsfiddle,以及jquery文档,了解如何获取html元素的属性 - &gt; http://api.jquery.com/attr/。
jQuery选择器对象本身没有属性id
。您必须使用.attr('id')
函数。
我修正了这一切,其他一切正常,正如你在这个jsfiddle中看到的那样:http://jsfiddle.net/AdtrX/1/
答案 5 :(得分:2)
永远记住!
在jQuery中,如果要访问所选元素的某些attribute
,则使用jQuery
的
.attr()
API。
现在你说了这个,
document.getElementById("content").id
有效,
此行的等效jQuery
语句为
$("#content").attr('id');
选择属性使用.attr()
对于操作style / css,请使用.css()
你也可以使用.attr()
赞.attr('style','your new style');
答案 6 :(得分:2)
您可以使用.attr(“id”)函数获取id。 使用此代码: 的 $( “#含量”)ATTR( “ID”); 强>
答案 7 :(得分:1)
我有一个ID为LING_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
希望这可以帮助你