Javascript $(此)子项始终返回未定义的

Javascript $(此)子项始终返回未定义的,javascript,jquery,this,undefined,Javascript,Jquery,This,Undefined,我对innerHTML返回的undefined有问题。可能是因为html()和innerHTML之间的差异 我的JavaScript代码: var content2 = document.getElementById("content2"); var opis; $(function() { $('.blok').click(function(e) { opis = $(this).next('.opis'); if (!$('.popup:visible').length

我对
innerHTML
返回的
undefined
有问题。可能是因为
html()
innerHTML
之间的差异

我的JavaScript代码:

var content2 = document.getElementById("content2");
var opis;

$(function() {
  $('.blok').click(function(e) {
    opis = $(this).next('.opis');
    if (!$('.popup:visible').length) {
        content2.innerHTML= opis.html();
        $('.popup').fadeIn();
    }
    e.preventDefault();
    return false;
  });

  $('.popup .close, .popup .bg').click(function() {
    $(this).parents('.popup').fadeOut();
  });
})
我的HTML:

<body oncontextmenu="return false" onselectstart="return false" onselect="return false" oncopy="return false">
    <div class="popup"> 
        <div class="bg"></div> 
        <div class="container"> 
            <div id="content2"> </div> 
        </div> 
    </div> 
    And example of "blok": 
    <div class="blok"> $$|DO| = |OC| = 5$$ <div class="opis">2</div>
</div>

以及“blok”的示例:
$$| DO |=| OC |=5$$2

为什么content2总是返回未定义的元素?

类为blok的元素和类为opis的元素在DOM结构中不在同一级别上。所以
$(this).next('.opis')
无效<当元素位于同一DOM级别时,使用code>jquery
next()
。您需要以下表达式才能找到正确的元素<代码>opis实际上是

 $('.blok').click(function(e) {
    opis = $(this).find('.opis');
例如:


示例:

您的HTML在哪里?堆栈溢出被大量代码阻止。这里是:以及“blok”的示例:$$| DO |=| OC |=5$$2确保
var content2=document.getElementById(“content2”),但我需要这个()“opis”,因为我的html中有很多这样的结构:它更好,但它总是返回html中第一个“blok”的第一个面条“opis”的值。我不知道为什么。在你的问题中,只有一次出现带有class='opis'的div。如果有多个,则需要使用$。每个函数来获取所有元素。很乐意帮忙:)
$('.blok').click(function(e) {
$(this).children('.opis');