获取即时DOM结构之外的特定元素
Get a particular element outside the immediate DOM structure
这是标记
<div class='section_body'>
<div class='section_header'>
<h3>The header</h3>
</div>
<div class='section_body'>
<input type='text' name='qty[]'> ::::> <input type='text' name='amt[]'>
</div>
<div class='section_footer'>
<button class='saveChanges'>Save Changes</button>
</div>
</div>
当我用jquery单击sectionfooterdiv中的保存更改按钮时,我想访问sectionheaderdiv中h3标记中的文本。如果他们和在同一个div中,我可以得到它
$('.saveChanges').click(function(){
$(this).siblings('h3');
});
但现在他们不是我进步的方式。谢谢你们
ps。我不能使用id,整个部分对不同的条目重复pps。我是jquery的新手。
您可以使用closest()
获取父div,然后使用find()
:获取h3
$('.saveChanges').click(function () {
alert($(this).closest(".section_body").find(".section_header h3").text());
});
小提琴示例:
http://jsfiddle.net/oahaho82/
这可能会有所帮助。Js Fiddle
$('.saveChanges').click(function(){
var parent = $(this).parent().parent();
alert($('h3', $('.section_header', parent)).text());
});
因为您通过循环创建标记,所以可以向标记添加ID。
使用循环生成标记可能看起来像这样(一个非常简单的例子):
var mydiv;
for (var i = 1; i <=3; i++) {
mydiv += "<div id='outerdiv-";
mydiv += i + "' class='section_body'><div id='divheader-" + i + "' class='section_header'>";
mydiv += "<h3 id='h3-" + i + "'>The header</h3></div>";
mydiv += "<div id='divinput-" + i + "' class='section_body'>";
mydiv += "<input id='inptqty-" + i + "' type='text' name='qty[]'> ::::> ";
mydiv += "<input id='inptamt-" + i + "' type='text' name='amt[]'></div>";
mydiv += "<div id='divftr-" + i + "' class='section_footer'>";
mydiv += "<button id='btnsave-" + i + "' class='saveChanges'>Save Changes</button></div>";
mydiv += "</div>";
}
$('#holder-div').html(mydiv);
这是JSFiddle
考虑到这一点,我会更改标记,使H3标记特定:
<div class='section_body'>
<div class='section_header'>
<h3 id='h3-1'>The header</h3>
</div>
<div class='section_body'>
<input type='text' name='qty[]'> ::::> <input type='text' name='amt[]'>
</div>
<div class='section_footer'>
<button class='saveChanges'>Save Changes</button>
</div>
</div>
那么你的功能可能是这样的:
$('.saveChanges').click(function() {
var nm = $(this).attr('id')
nm = nm.slice(nm.indexOf('-'));
var hdr = $('#h3' + nm).html();
console.log(hdr);
});
相关文章:
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何在DOM元素上按类型构建此函数
- DOM元素和angular元素之间的主要区别是什么
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 如何使用JavaScript在没有html dom的情况下隐藏html元素
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- 通过AJAX侦听向DOM添加某些元素
- 如何在使用Ractive.extend()时引用DOM元素
- 在d3中向DOM元素添加了图像,但现在它赢得了't过渡
- Selenium无法在浏览器DOM中定位元素
- 如何'剪切'DOM元素并将其显示在其他位置
- 转换<a>使用jQuery将文本字符串转换为dom元素
- 从dom中删除任何元素后,Touchmove事件停止触发
- d3在数据更新时错误地附加了dom元素
- 访问VueJS中的DOM元素
- 在Meteor中如何查找DOM元素(渲染后)
- 找到元素DOM的根节点(阴影或光)的最佳方法是什么?
- 在querySelector:如何获得第一个和最后一个元素?dom中使用的遍历顺序