改变父类

时间:2014-01-12 03:35:43

标签: javascript jquery html

我的javascript问题我无法解释。这是html:

<body>
<div id='slidecarousel' class='slide1' onclick='No functions can be here'>
<div id="sliderButton" onclick='pageSlider(this)'>Next Slide</div>
<div id='piece of slider...'></div>
<div...></div>
...
</div>
</body>

这是javascript和错误:

function pageSlider(elem)
{
    var pDiv = $(elem).parent('#slidecarousel')
    if ( pDiv.className.match(/(?:^|\s)slide1(?!\S)/) ){

**Uncaught TypeError: cannot call method 'match' of undefined**

         pDiv.className = "slide2";
    } else {
    pDiv.className = "SlideErr";
}
}

3 个答案:

答案 0 :(得分:1)

pDiv是一个jQuery对象,不是DOM元素,因此它没有className属性。您可以使用以下命令获取第一个DOM元素:

pDiv[0]

所以,只需改变一下:

var pDiv = $(elem).parent('#slidecarousel')

到此:

var pDiv = $(elem).parent('#slidecarousel')[0];

作为一项额外的改变,这并没有多大意义:

var pDiv = $(elem).parent('#slidecarousel')

如果您只想要#slidecarousel对象,那么只需使用:

var pDiv = $('#slidecarousel')[0];

因为无论如何整个页面中只能有一个#slidecarousel对象。


或者,如果您只想要elem的父级,请使用此:

var pDiv = elem.parentNode;

或者,你也可以像这样使用.closest()

var pDiv = $(elem).closet(".slide1")[0];

答案 1 :(得分:1)

使用jQuery的方法测试类:

if (pDiv.hasClass("class1")) 

答案 2 :(得分:0)

你应该这样做:

pDiv[0].className.match(

pDiv.attr("class").match(

干杯