0

对不起,我的英语不好,例如我有 2 列,点击时的每一列div.open-model都会显示一个模型有一个值h3.title,我使用了 jQuery,但我无法获得h3.title每一列的值

$(document).ready(function() {
  $('.open_modal').click(function(e) {
    var h3title = $(this).find('.parent .title').html();
    console.log('h3title');
    e.preventDefault();

  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="parent">
  <h3 class="title">Title1</h3>
</div>
<div class="open-model">Open model</div>

<div class="parent">
  <h3 class="title">Title2</h3>
</div>
<div class="open-model">Open model</div>

4

5 回答 5

1

试试prev()

var h3title = $(this).prev('.parent').find(".title").text();

在修复其他错误之后

$(document).ready(function() {
  $('.open-model').click(function(e) {
    var h3title = $(this).prev('.parent').find(".title").text();
    console.log(h3title);
    e.preventDefault();

  });
});
于 2017-07-13T08:13:44.943 回答
1

你在这里有几个问题:

  • 元素上的类是open-model所以你的选择器open_modal不正确
  • find()prev().find()查找子元素,但您要查找的目标是兄弟元素的子元素,因此您需要
  • h3title是一个变量,因此在将其作为参数传递给console.log().

试试这个:

$(document).ready(function() {
  $('.open-model').click(function(e) {
    e.preventDefault();
    
    var h3title = $(this).prev('.parent').find('.title').text();
    console.log(h3title);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="parent">
  <h3 class="title">Title1</h3>
</div>
<div class="open-model">Open model</div>

<div class="parent">
  <h3 class="title">Title2</h3>
</div>
<div class="open-model">Open model</div>

于 2017-07-13T08:14:23.013 回答
0
  1. 点击时选择器的拼写错误
  2. 使用.prev()而不是.find()
    $('.open-model').click(function(e) {// fix selector
      var h3title = $(this).prev('.parent').find('.title').html();//use prev()
      console.log(h3title);
    
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="parent">
      <h3 class="title">Title1</h3>
    </div>
    <div class="open-model">Open model</div>
    
    <div class="parent">
      <h3 class="title">Title2</h3>
    </div>
    <div class="open-model">Open model</div>
于 2017-07-13T08:14:51.330 回答
0

将其更改为

 $(document).ready(function(){
       $('.open-modal').click(function(e){
          e.preventDefault();
          var h3title = $(this).prev().find('.title').text();
          console.log('h3title');
       });
    });
于 2017-07-13T08:16:39.217 回答
0

在下面的示例中,我们获取了前一个 DOM 元素,正如我们在结构中看到的那样,我们想要获取其子元素的内部文本。

$('.open-model').on('click', function(){
  console.log($(this).prev().children().text());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="parent">
    <h3 class="title">Title1</h3>
</div>
<div class="open-model">Open model</div>

<div class="parent">
    <h3 class="title">Title2</h3>
</div>
<div class="open-model">Open model</div>

于 2017-07-13T08:19:39.577 回答