0

我觉得我在做脏代码,虽然它工作得很好......

在这种情况下,如何用常规 JQuery 选择器替换那些 IF 语句:

见代码+提琴手

<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"));
            }
        });

    });

});​

提琴手

4

3 回答 3

1

您可以连接字符串:

$("a[itemHistoryID='" + historyID + "']");

http://jsfiddle.net/FBCBP/

请注意,无需选择文档对象并使用find方法。您可以使用$orjQuery直接选择元素,也可以单独使用属性选择器非常慢,您可以在属性选择器之前使用元素选择器(在这种情况下a)。

于 2012-10-10T01:46:42.533 回答
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"));
    });

});

});​
于 2012-10-10T01:47:19.723 回答
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'));
    });

});

演示

于 2012-10-10T01:59:48.147 回答