javascript - 更改父类

标签 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";
}
}

最佳答案

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];

关于javascript - 更改父类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21071012/

相关文章:

javascript - 如何启动和停止 RXJS 中的可观察间隔?

jquery - 如何使 JQuery 在文本右侧(而不是下方)显示悬停图像?

c# - ASP.NET MVC 表单 - 返回具有先前表单值的 View 的正确方法是什么?

html - 带有填充 :url(#id) style in external stylesheet broken, 内联样式的 Firefox SVG 很好

html - 从父表内的表中的最后一个单元格中删除 border-left

javascript - 考虑到未知 Javascript 引擎的代码,哪些考虑因素对执行速度和内存节省影响最大?

javascript - 没有预检的跨域发布json

javascript - Angular 的 ng-options 没有正确显示默认值

jquery - 如何居中对齐div(与text-align : center)?相同的方式

javascript - jQuery Accordion 在折叠内容中加载时获得最小高度