0

正常に動作しますが、汚いコードをやっているような気がします...

そのような場合、これらの IF ステートメントを通常の JQuery セレクターに置き換えるにはどうすればよいですか。

コード + フィドラーを参照

<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ドキュメント オブジェクトを選択してメソッドを使用する必要はないことに注意してください。$またはを直接使用して要素を選択できます。jQueryまた、属性セレクターを単独で使用すると非常に遅くなります。属性セレクターの前に要素セレクターを使用できます (この場合は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代わりに使用できます。次の要素だけがクリックされたリンクと等しいことがわかります。eachaitemHistoryID

$(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 に答える