编辑:缺少一条信息 - 我不能使用类选择器,因为有更多的div具有相同的类。我已经想到了,但我忘了提它。我不知道为什么我的帖子被投票,但考虑到我提供了大量信息,给了它诚实的努力,并试图用代码示例详细说,看起来非常愚蠢。这个论坛上的人有时候很荒谬。
我正在尝试设置没有一个div的div的id,我无法在一代页面上给它一个。我尝试过使用jquery(.each,.contains,.find,.filter等),我似乎无法正确使用它。我知道有很多人问过这个问题,但没有一个答案对我有用。
我能够设置div的文本(html?),但没有别的。最终看起来像这样:
<div class="dhxform_note" style="width: 300px;">Remaining letters: 500</div>
我想要一个div对象的句柄,这样我就可以通过更新文本向用户显示他们可以键入多少个字母。
使用此:
$("div")
返回页面上所有div的列表。我可以在列表中看到目标div,但是我不能让jquery返回单个对象。
我知道也可以这样做:
var divs = document.getElementsByTagName("div");
for(var i = 0; i < divs.length; i++) {
if( /^Remaining letters/.test(divs[i].innerText) )
divs[i].id = "kudosMsgNote"
}
}
但是我希望用一个更清晰的解决方案来完成这个,包括jquery。我也只是想知道如何使用jquery,美学而不是。
答案 0 :(得分:3)
使用班级选择器。
var theDivViaTheClass = $(".dhxform_note");
描述:选择具有给定类的所有元素。
版本添加:1.0
jQuery( ".class" )
class
:要搜索的课程。一个 元素可以有多个类;只有其中一个必须匹配。对于类选择器,jQuery使用JavaScript的本机 getElementsByClassName()函数,如果浏览器支持它。
答案 1 :(得分:3)
您好像是按其文字定位<div>
。尝试使用:contains
选择器:
$("div").filter(':contains("Remaining letters")').first().attr("id", "kudosMsgNote");
.first()
是为了确保您不为多个元素设置相同的id
,以防多个元素包含“剩余字母”文本。
以下是:contains
选择器的文档:http://api.jquery.com/contains-selector/
请注意,使用:contains
时,您要查找的文字区分大小写!
答案 2 :(得分:2)
那个div是否只是班级dhxform_note
的唯一一个?如果是这样,您可以使用类选择器:
$('.dhxform_note').html();
答案 3 :(得分:1)
使用jQuery,您可以指定任何css选择器来获取div:
$(".dhxform_note").attr("id", "kudosMsgNote");
也会为你提供这个元素。
选择内部文本可能有点冒险,所以我可能会建议如果您可以控制该HTML元素的呈现,那么您可以像这样呈现它:
<div name="remainingLetters" class="dhxform_note" style="width: 300px">Remaining Letters: 500</div>
得到这样的话:
$("[name=remainingLetters]").attr("id", "kudosMsgNote");
但是,您可能需要根据内部文本选择此项。在这种情况下,您需要执行以下操作:
$("div").each(function() {
if ( /^Remaining letters/.test($(this).html()) ) {
$(this).attr("id", "kudosMsgNote");
}
});
答案 4 :(得分:1)
如果你因任何原因无法设置id,我会假设你也不能设置类。也许你也没有可能有的专属列表。如果所有这些假设都适用,那么你可以考虑减少你的路径,否则请使用类选择器。
随着说:
$("div").filter(function() {
return /^Remaining letters/.test($(this).text())
}).attr('id', 'id of your choice');
答案 5 :(得分:0)
对于有div
个dhxform_note
的多个div
并且您不知道所述$("div.dhxform_note").each(function(){
var text = $(this).text();
if(/^Remaining letters/.test(text)){
$(this).attr("id", "kudosMsgNote");
}
});
的确切位置的情况:
dhxform_note
但是,如果您知道div始终是$("div.dhxform_note").get(1).id = "kudosMsgNote";
的第二次出现,那么您可以执行以下操作:
$("div.dhxform_note:contains('Remaining letters')").first().attr("id", "kudosMsgNote");
或进行contains
搜索:
{{1}}