簡體   English   中英

JavaScript如何找到包含字符串的最接近的類

[英]JavaScript how to find closest class containing string

在單擊按鈕時,我試圖找到包含字符串的最近的類。 HTML看起來像:

<div class="feature I am the best">
  <div class="some style"> 
    <div class="new style">
      <button class="clickme">Click me </button>
    </div>
  </div>
</div>

我的JavaScript是

$('.clickme').on('mouseup', function(event) {
  var description = $(this).closest('div[class*=:contains(feature)]').attr('class');
  console.log("Description "+description);
});

我進入控制台的全部是:

Description undefined

假設它確實是您想要的子字符串檢查(而不是類選擇器),則您不希望contains(...)位,這就是*=含義:

 $('.clickme').on('mouseup', function(event) { var description = $(this).closest('div[class*=feature]').attr('class'); // Change here -------------------------------^^^^^^^ console.log("Description "+description); }); 
 <div class="feature I am the best"> <div class="some style"> <div class="new style"> <button class="clickme">Click me </button> </div> </div> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 

如果字符串中可能包含引號或其他不符合CSS標識符定義的字符(或者,如果您只是想保持謹慎),請在該值.closest('div[class*="feature I am"]')加上引號: .closest('div[class*="feature I am"]')


但是,在您的示例中, feature是一個類,因此您要使用類選擇器( .closest("div.feature") )。

只需將類選擇器與.closest()一起使用,無需使用:contains()

 $('.clickme').on('mouseup', function(event) { var description = $(this).closest('.feature').attr('class'); console.log("Description "+description); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="feature I am the best"> <div class="some style"> <div class="new style"> <button class="clickme">Click me </button> </div> </div> </div> 

class*="feature"替換包含

 $('.clickme').on('mouseup', function(event) { var description = $(this).closest('div[class*="feature"]').attr('class'); console.log("Description " + description); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="feature I am the best"> <div class="some style"> <div class="new style"> <button class="clickme">Click me </button> </div> </div> </div> 

 $('.clickme').on('mouseup', function(event) { var description = $(this).closest("[class^=feature]").prop('class'); console.log("Description "+description); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> <div class="feature I am the best"> <div class="some style"> <div class="new style"> <button class="clickme">Click me </button> </div> </div> </div> 

對於通配符,選擇器應該像這樣。

將字符串保留在雙引號內

var description = $(this).closest('div[class*=:contains("feature")]').attr('class'); 

暫無
暫無

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

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