jquery - 从 ajax 内容中查找 div 类名
问题描述
我有以下由服务器端脚本生成的 ajax 响应:
<div class="item-title3">Testname</div>
<div class="item-level">120</div>
<div class="item-binding">40</div>
<div class="item-type">Feet</div>
现在我想获取div class name
包含item-title
类名内的单词。所以 div 类名中的数字不应该是相关的(在这种情况下 item-title3 的 3 不应该是相关的)。
在此示例中,我想查找并存储item-title3
在我的变量 className 中。
我用 filter 方法尝试过,但结果是 [object Object]:
let className = $content.filter('div.item-title');
完整代码:
<script language="javascript">
jQuery(function($) {
$("[tooltip-link]").each(function() {
let $tooltip = $(this);
let id = $tooltip.attr("data-id");
$.ajax({
url: "/datenbank/itemscript.php",
type: "GET",
data: {
"var": id
}
}).then(function(data) {
let $content = $(data);
let title = $content.siblings('[class^=item-title]').text()
let className = $content.filter('div.item-title');
$tooltip.tooltip({
tooltipClass: "test",
content: data
});
$("<div class=\"" + ClassName + "\">" + title + "</div>").appendTo($tooltip);
});
});
});
</script>
<a tooltip-link data-id="12555" title=""></a>
解决方案
要选择其类包含的元素,item-title
您可以使用
var item_title = $('div[class*="item-title"]'); // select any div element has a class contains `item-title`
要获得您需要的类名,即使您可以使用同一元素的其他类.split()
,.indexOf
请参阅下一个示例
var item_title = $('div[class*="item-title"]');
//console.log(item_title);
var ClassName = '';
var classes = item_title.attr('class').split(/(\s+)/); // split classes with space
$.each(classes , function(i , v){
v = v.trim(); // trim() to avoid any left/right white-spaces
if(v.indexOf('item-title') > -1){ // if the class contains item-title
ClassName = v;
}
});
console.log(ClassName);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="item-testClass item-title3">Testname</div>
<div class="item-level">120</div>
<div class="item-binding">40</div>
<div class="item-type">Feet</div>
我向item-testClass
div 元素添加了类以检查代码是否有效,即使同一元素还有其他类..您可以将其删除
如果您有多个元素item-title
并且需要让所有元素都使用.each
var item_title = $('div[class*="item-title"]'); // if its array of elements
//console.log(item_title);
item_title.each(function(){
var ClassName = '';
var classes = $(this).attr('class').split(/(\s+)/); // split classes with space
$.each(classes , function(i , v){
v = v.trim(); // trim() to avoid any left/right white-spaces
if(v.indexOf('item-title') > -1){ // if the class contains item-title
ClassName = v;
}
});
console.log(ClassName);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="item-testClass item-title3">Testname 3</div>
<div class="item-level">120</div>
<div class="item-binding">40</div>
<div class="item-type">Feet</div>
<div class="item-testClass item-title50">Testname 50</div>
推荐阅读
- excel - VBA UserForm 使用带有数字的动态名称范围编辑条目
- java - 是否可以互相翻译 ServerHttpRequest 和 HttpServletRequest
- javascript - Leaftlet - 如果在地图边界之外,防止位置标记出现
- kotlin - 在 Kotlin 中合并地图列表
- vmware - 在虚拟机上使用 esxcli 关闭 ESXi 主机以解决 UPS 电源故障
- android - 为什么 ActivityManager.getAppTasks 不返回所有应用任务?
- arrays - 使用 typescript 扩展通用对象输入的通用键
- php - Laravel 8 Seeders:此集合实例上不存在属性 [id]
- javascript - Firebase Firestore:在集合中创建集合
- angular - 从Angular中的数据列表中获取选定的对象