我觉得我在做脏代码,虽然它工作正常......
在这种情况下,如何通过常规JQuery选择器替换那些IF语句:
见代码+ fiddler
<html>
<body>
<a href="#b" class="cssPauseAll" historyID="12">Pause All</a><br/>
<a href="#b" itemHistoryID="12" ContentID="45">AA</a><br/>
<a href="#b" itemHistoryID="12" ContentID="14">BB</a><br/>
<a href="#b" itemHistoryID="12" ContentID="78">AA</a><br/>
<a href="#b" class="cssPauseAll" historyID="13">Pause All</a><br/>
<a href="#b" itemHistoryID="13" ContentID="45">BB</a><br/>
<a href="#b" itemHistoryID="13" ContentID="14">BB</a><br/>
<a href="#b" itemHistoryID="13" ContentID="78">CC</a><br/>
</body>
</html>
$(document).ready(function () {
$(document).on("click","a.cssPauseAll[historyID]", function () {
var historyID = $(this).attr("historyID");
//alert("historyID from PauseAll " + $(this).attr("historyID"));
$(document).find("[itemHistoryID]").each(function() {
var itemHistoryID = $(this).attr("itemHistoryID");
if(historyID == itemHistoryID)
{
alert($(this).attr("ContentID"));
}
});
});
});
答案 0 :(得分:1)
您可以连接字符串:
$("a[itemHistoryID='" + historyID + "']");
请注意,无需选择文档对象并使用find
方法。您可以直接使用$
或jQuery
选择元素,并且单独使用属性选择器非常慢,您可以在属性选择器之前使用元素选择器(在本例中为 {{1 }})。
答案 1 :(得分:1)
是的,你应该能够做到这一点
$(document).ready(function () {
$(document).on("click","a.cssPauseAll[historyID]", function () {
var historyID = $(this).attr("historyID");
//alert("historyID from PauseAll " + $(this).attr("historyID"));
$(document).find("[itemHistoryID='" + historyID + "']").each(function() {
// here only the matching itemHistoryIds will loop
alert($(this).attr("ContentID"));
});
});
});
答案 2 :(得分:1)
如果您的HTML正是这样,那么您可以使用nextUntil
代替each
循环所有元素,您知道只有下一个a
元素具有itemHistoryID
等于点击链接。
$(document).on("click","a.cssPauseAll[historyID]", function () {
var historyID = $(this).attr("historyID");
$(this).nextUntil('a[itemHistoryID!="' + historyID + '"]', 'a').each(function() {
alert($(this).attr('ContentID'));
});
});