jQuery相当新,我遇到了一个问题。为了清晰起见,简化它。
假设我有3个标签,所有标签都有一个具有相同ID的按钮和一个带有相同ID的标签。当用户单击选项卡1上的按钮时,我想从选项卡1上的标签引用.html()。当用户单击按钮选项卡2时,我想从选项卡2上的标签引用.html()等等。
是否有一种简单的方法可以实现这一目标,或者每个标签/按钮都必须有唯一的ID来进行此操作?
提前致谢。
编辑:添加代码,这是我的index.jsp与现有标签:
<div id="tabs">
<ul>
<li>
<a href="${pageContext.request.contextPath}/your_searches" id="tab1"><span>My Searches</span></a>
</li>
<li>
<a href="${pageContext.request.contextPath}/public_searches" id="tab2"><span>Public Searches</span></a>
</li>
<li>
<a href="${pageContext.request.contextPath}/new_search" id="tab3"><span>New Search</span></a>
</li>
<li>
<a href="#tabs-4" id="tab4">View Article</a>
</li>
</ul>
<div id="tabs-1"></div>
<div id="tabs-2"></div>
<div id="tabs-3"></div>
<div id="tabs-4"> <%@include file="view_article2.jsp"%></div>
</div>
<div id="dialog" title="Alert!"></div>
<div id="editDialog" title="Alert!"></div>
<div id="editDialogYourSearch" title="Alert!"></div>
<div id="updateSearchCriteriaDialog" title="Alert!"></div>
存在的jQuery相当复杂,但使用以下命令在click事件上添加了一个选项卡:
$("#" + tabId).load($("#context").val() + '/resources/templates/searchResultsTemplate.html', function () {
var html = $("#" + tabId).html();
$("#" + tabId).html(html.replace(/#tabId#/g, tabId));
var headlnTrEnabled = data.searchResults.searchVO.headlnTrEnabled;
var docTrEnabled = data.searchResults.searchVO.docTrEnabled;
var languageName = data.searchResults.searchVO.languageName;
if(headlnTrEnabled == 0) {
document.getElementById("translated-" + tabId ).disabled=true;
$("label[for='translated-" + tabId + "']").text("Language translation is unavailable for '" + languageName + "'");
}
// Process the click event on the 'translated' checkbox
processTranslationSupportedCheckboxEvents( tabId );
//alert("new_search queryAndPopulateArticlesSearchResults: before populateResultsPageSearchCriteria");
// Set Search Criteria value in Search Results' hidden fields
populateResultsPageSearchCriteria( data.searchResults, tabId );
// Initialize DataTable
initDataTable( '#articleTable-' + tabId );
// Define double-click method on data rows
initArticleTableDoubleClick( '#articleTable-',
tabId,
data.searchResults.searchVO.languageCode,
"#error" );
// Populate Search Results UI from article list
// var counter = populateSearchResultsTable( tabId, data.searchResults.articleList );
checkHighlight();
$('#searchInfo').html( data.hash );
在这些添加的标签(searchResultsTemplate.html)上,我需要从按钮点击引用标签。这是我所拥有的简化HTML:
<input type="checkbox" id="translated-#tabId#"/><label for="translated-#tabId#">Translate Article Titles</label>
<div align="right"><input type="button" value="Export Excel CSV File.." id="exp-csv" />
<br>
<label id="DownloadLink"></label>
</div>
<input id = "btnSubmit" type="submit" value="Release"/>
<p id="searchTitle-#tabId#" name="searchTitle"></p>
<label id="searchInfo">None</label>
#exp-csv按钮需要在当前选中的选项卡上引用#searchInfo标签。
答案 0 :(得分:0)
不确定你的目标是什么,但我认为你的意思是这样的:
$(".tab").children("button").on("click", function() {
var genericVariable = $(this).siblings("label").html();
});
要注意,这只适用于兄弟元素(相邻元素)。如果标签标签位于与teh按钮分开的另一个标签内,那么您必须首先使用parents()。eq(-1)遍历标签树,然后向下遍历带有标签的标签。
答案 1 :(得分:0)
在JQuery论坛上得到了一些帮助并解决了它。
我最终使用了:
$(this).closest('div').find('.class').html();
遍历元素到最近的div,然后返回div找到最近的相关类文件,然后返回HTML。
谢谢你的帮助,伙计们。