2016-08-05 49 views
-1
<div class="container"> 
<div class="well"> 
    <h2>Hurry Up!</h2> 
    <ul> 
    <li> 
    <a onclick="clicked()"></a> 
    </li> 
    <li> 
    <a onclick="clicked()"></a> 
    </li> 
    </ul> 
    </div> 
</div> 

上面是我的html语法的一个示例。我想实现的是当单击“a”标签时,我想查找“h2”元素的文本。jquery点击后选择之前的元素

例如,当点击“a”标签时,文本“快点!”的h2应显示在控制台中。

我试过,但它不工作:

function clicked(){ 
     var title = $(this).find('h2').text(); 
     console.log(title); 
} 

而且也是这样:

function clicked(){ 
     var title = $(this).parentsUntil('.container').find('h2').text(); 
     console.log(title); 
} 

在控制台,出现什么都没有,只有一个空行。

我想补充说的是我有很多次这个相同的语法。所以h2文本应该是它被点击的容器,因此我通过'this'来尝试它。

+0

通元素,把它作为函数中的参数以及该变量而不是“this”。 – RRK

回答

0

试试这个

function clicked(element){ 
 
     var title = $(element).closest('div').find('h2').html(); 
 
     console.log(title); 
 
     alert(title); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="container"> 
 
<div class="well"> 
 
    <h2>Hurry Up!</h2> 
 
    <ul> 
 
    <li> 
 
    <a onclick="clicked(this)" href="#">Click 1</a> 
 
    </li> 
 
    <li> 
 
    <a onclick="clicked(this)" href="#"> Click 2</a> 
 
    </li> 
 
    </ul> 
 
    </div> 
 
</div>

+0

我试过了你的代码,但是随着'快点'它也显示'a'元素文本。它应该只显示h2文本,即'快点' – crazyboy24

+0

@ user1645734 - 你必须做出与我提供的不同的东西,就像我上面提供的它显示快点的代码片段一样!在'console.log'和'alert'中。你运行了上面的代码片段并检查了吗? –

+0

是的,我直接在stackoverflow上运行它,也试过它在jsfiddle。你可以在这里看到https://jsfiddle.net/L4nkqe14/ – crazyboy24

0

试试这个:

<div class="container"> 
<div class="well"> 
    <h2>Hurry Up!</h2> 
    <ul> 
    <li> 
    <a onclick="clicked(this)"></a> 
    </li> 
    <li> 
    <a onclick="clicked(this)"></a> 
    </li> 
    </ul> 
    </div> 
</div> 

function clicked(elem){ 
    var text = $(elem).closest('h2').text(); 
    // text contains Hurry Up! in it 
} 
0

function clicked(element) { 
 
    var title = $(element).closest('ul').prev('h2').text(); 
 
    console.log(title); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<div class="container"> 
 
    <div class="well"> 
 
    <h2>Hurry Up!</h2> 
 
    <ul> 
 
     <li> 
 
     <a onclick="clicked(this)">clicked</a> 
 
     </li> 
 
     <li> 
 
     <a onclick="clicked(this)">clicked</a> 
 
     </li> 
 
    </ul> 
 
    </div> 
 
</div>

使用.closest()获得UL然后使用.prev()拿到H2

+0

我试过了你的代码,但是随着'快点'它也显示'li'文本。它应该只显示h2文本,即'快点' – crazyboy24

+0

检查您的html标记是否已关闭标记 – guradio

+0

我已检查过它,并且每个标记都已正确关闭。我复制了你提供的代码,并且直接从stackoverflow运行它,它显示了li文本。 – crazyboy24

0

,如果你是不是在找一个模块化的答案你可以试试这个:类似这样的``

function clicked(){ 
    var title = $(".well h2").text(); 
    console.log(title); 
    }