簡體   English   中英

使用jQuery獲取其他元素.closest()或parent()中的類

[英]Get class in other element .closest() or parent() using jQuery

我有一個問題,對於專家來說很簡單。

我確實在一些html標記上循環播放,例如以下代碼段:

// looping
<div class="toggle m-toggle-accordian">
    <p class="i-want-to-get-this" id="biaya-123">Biaya Admin 0%</p>
    <p>Rp 5000</p>
</div>
<div class="collapse m-coll-air-unselected">
    <div class="m-offer-detail">
        <div class="col-xs-8 m-offer-caption">Cicilan per Bulan</div>
        <div class="col-xs-4 m-offer-amount">Rp 4000</div>
    </div>
    <div class="m-offer-detail">
        <div class="button-click">Pilih</div>
    </div>
</div>
// end looping

我想在使用“按鈕單擊”類單擊按鈕時希望從“ i-want-to-get-this”類獲取ID值。

我嘗試使用.find(),但未成功。

$(this).find('.i-want-to-get-this').attr('id');

使用$($(".button-click").parent().parent().parent().find('.m-toggle-accordian .i-want-to-get-this')[0]).attr('id')定位到所需元素

 $(document).on("click", ".button-click", function() { console.log($($(this).parent().parent().parent().find('.m-toggle-accordian .i-want-to-get-this')[0]).attr('id')); }) 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="toggle m-toggle-accordian"> <p class="i-want-to-get-this" id="biaya-123">Biaya Admin 0%</p> <p>Rp 5000</p> </div> <div class="collapse m-coll-air-unselected"> <div class="m-offer-detail"> <div class="col-xs-8 m-offer-caption">Cicilan per Bulan</div> <div class="col-xs-4 m-offer-amount">Rp 4000</div> </div> <div class="m-offer-detail"> <div class="button-click">Click me</div> </div> </div> 

我只是意識到那是您正在循環創建元素,所以我認為您需要添加更多這樣的代碼。

因此,當您循環創建元素時,為什么不將值添加為按鈕屬性呢?

<div class="button-click" data-elementId="biaya-123">Pilih</div>

然后您可以輕松地使用jquery

$('.button-click').click(function () {
    var myId = $(this).data('elementId'); // to get the target element ID
    var targetElement = $('#' + myId); // to get the targetElement
})

使用以下代碼從班級獲取ID

 $('.button-click').click(function(){ alert($('.i-want-to-get-this').attr('id')) }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="toggle m-toggle-accordian"> <p class="i-want-to-get-this" id="biaya-123">Biaya Admin 0%</p> <p>Rp 5000</p> </div> <div class="collapse m-coll-air-unselected"> <div class="m-offer-detail"> <div class="col-xs-8 m-offer-caption">Cicilan per Bulan</div> <div class="col-xs-4 m-offer-amount">Rp 4000</div> </div> <div class="m-offer-detail"> <div class="button-click">Pilih</div> </div> </div> 

 $(".button-click").on("click", function(){ console.log( $(this).parents(".m-coll-air-unselected").prev(".m-toggle-accordian").find(".i-want-to-get-this").attr("id") ); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="toggle m-toggle-accordian"> <p class="i-want-to-get-this" id="biaya-123">Biaya Admin 0%</p> <p>Rp 5000</p> </div> <div class="collapse m-coll-air-unselected"> <div class="m-offer-detail"> <div class="col-xs-8 m-offer-caption">Cicilan per Bulan</div> <div class="col-xs-4 m-offer-amount">Rp 4000</div> </div> <div class="m-offer-detail"> <div class="button-click">Click me</div> </div> </div> <div class="toggle m-toggle-accordian"> <p class="i-want-to-get-this" id="biaya-123">Foo Bar 0%</p> <p>Rp 5000</p> </div> <div class="collapse m-coll-air-unselected"> <div class="m-offer-detail"> <div class="col-xs-8 m-offer-caption">Element 2</div> <div class="col-xs-4 m-offer-amount">foo bar</div> </div> <div class="m-offer-detail"> <div class="button-click">Click me 2</div> </div> </div> 

您可以通過以下方式進行操作: https : //codepen.io/creativedev/pen/BPKbGP

$('.button-click').on('click', function(e){      
  console.log($(this).parents('.m-coll-air-unselected').prev('div').find('.i-want-to-get-this').attr('id'))
})

您可以通過創建父元素來實現此目的,例如:

<div class="parent">
 <div class="toggle m-toggle-accordian">
  <p class="i-want-to-get-this" id="biaya-123">Biaya Admin 0%</p>
  ...
 </div>
 <div class="collapse m-coll-air-unselected">
 ...
  <div class="m-offer-detail">
   <div class="button-click">Pilih</div>
  </div>
 </div>
</div>

Java腳本

$('.button-click').click(function() {
 $(this).parents('.parent').find('.i-want-to-get-this').attr('id');
});

我們不知道“我想得到這個”類名是否唯一,並且由於我們在談論循環,因此最好不要跳到循環標記之外。 我們可以使用$.closest()$.prev()在標簽之間移動

這仍然不是一個好習慣,因為我們冒着停止功能的風險。 如果有人在循環中輸入了其他標簽,則功能可能無法正常工作

編輯:如果我們假定帶有“ toggle”類的div標簽是常量,我們還可以設置.prev('。toggle'),以便將獲取其他ID的可能性降至最低。

我建議您在按鈕上添加data-id或類似數據屬性,例如: <button data-id='my-id-1' class="button-click">Click me</button>然后您可以簡單地使用$(this).data('id')

 $(document).on("click", ".button-click", function() { console.log($(this).closest('.collapse').prev().find('.i-want-to-get-this').first().attr('id')); }) 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="toggle m-toggle-accordian"> <p class="i-want-to-get-this" id="i_got_id_1">Biaya Admin 0%</p> <p>Rp 5000</p> </div> <div class="collapse m-coll-air-unselected"> <div class="m-offer-detail"> <div class="col-xs-8 m-offer-caption">Cicilan per Bulan 1</div> <div class="col-xs-4 m-offer-amount">Rp 4000</div> </div> <div class="m-offer-detail"> <button class="button-click">Click me</button> </div> </div> <div class="toggle m-toggle-accordian"> <p class="i-want-to-get-this" id="i_got_id_2">Biaya Admin 1%</p> <p>Rp 5000</p> </div> <div class="collapse m-coll-air-unselected"> <div class="m-offer-detail"> <div class="col-xs-8 m-offer-caption">Cicilan per Bulan 2</div> <div class="col-xs-4 m-offer-amount">Rp 4001</div> </div> <div class="m-offer-detail"> <button class="button-click">Click me</button> </div> </div> <div class="toggle m-toggle-accordian"> <p class="i-want-to-get-this" id="i_got_id_3">Biaya Admin 113%</p> <p>Rp 5000</p> </div> <div class="collapse m-coll-air-unselected"> <div class="m-offer-detail"> <div class="col-xs-8 m-offer-caption">Cicilan per Bulan 3</div> <div class="col-xs-4 m-offer-amount">Rp 7000</div> </div> <div class="m-offer-detail"> <button class="button-click">Click me</button> </div> </div> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM