kev*_*ham 2 html javascript jquery class closest
单击按钮时,我试图找到包含字符串的最接近的类。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>
Run Code Online (Sandbox Code Playgroud)
我的 JavaScript 是
$('.clickme').on('mouseup', function(event) {
var description = $(this).closest('div[class*=:contains(feature)]').attr('class');
console.log("Description "+description);
});
Run Code Online (Sandbox Code Playgroud)
我在控制台中得到的只是:
Description undefined
Run Code Online (Sandbox Code Playgroud)
假设它确实是您想要的子字符串检查(而不是类选择器),您不需要该位contains(...),这意味着*=:
$('.clickme').on('mouseup', function(event) {
var description = $(this).closest('div[class*=feature]').attr('class');
// Change here -------------------------------^^^^^^^
console.log("Description "+description);
});Run Code Online (Sandbox Code Playgroud)
<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>Run Code Online (Sandbox Code Playgroud)
如果字符串可能包含引号或其他不符合CSS 标识符定义的字符(或者如果您只是想谨慎一些),请在值两边加上引号:.closest('div[class*="feature I am"]')
不过,在您的示例中,feature是一个类,因此您需要使用类选择器 ( .closest("div.feature"))。