jquery选择器不工作,为什么?

时间:2012-08-28 11:37:36

标签: jquery html javascript-events selector

我只是想操纵#content div中的元素,但$('#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')),但没有用。

8 个答案:

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

改变所选元素的CSS属性

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

答案 6 :(得分:2)

您可以使用.attr(“id”)函数获取id。 使用此代码: 的 $( “#含量”)ATTR( “ID”);

答案 7 :(得分:1)

是什么导致我进入这个页面

我有一个ID为LING_a_00224.s03

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

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

$("#LING_a_00224.s03")

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

这是因为dot (.)

中的the id

jquery会interpretid="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

希望这可以帮助你