0

JQM アコーディオン/折りたたみ可能なセットのコンテンツを動的に入力しようとしています。http://the-jquerymobile-tutorial.org/jquery-mobile-tutorial-CH20.phpを見てきましたが、例は古くなっているようです。だから私は実用的な例を考え出そうとしましたが、私は現在立ち往生していて、なぜこれがうまくいかないのかわかりません:

<script type="text/javascript">
$(document).ready(function() {
    $(".mySet").bind('expand', function (event, ui) {
        /* This prints e.g. "This is the first entry\n
        I'm the collapsible set content for section 1." */
        console.log($(this).text());

        /* This should print "This is the first entry" (=the innerText of <h3>)
        but it doesn't, it prints "This is the first entry\n
        I'm the collapsible set content for section 1." as well */
        console.log($(this).next().text());

        /* This should just print "I'm the collapsible set content for section 1"
        (=the innerText of <p>) but it doesn't, it prints e.g. "This is the 
        first entry\n I'm the collapsible set content for section 1." as well */
        console.log($(this).nextAll("p").text());
    });
});
</script>

<div data-role="collapsible-set">
    <div data-role="collapsible" class="mySet">
        <h3>This is the first entry</h3>
        <p>I'm the collapsible set content for section 1.</p>
    </div>
    <div data-role="collapsible" class="mySet">
        <h3>This is the second entry</h3>
        <p>I'm the collapsible set content for section 2.</p>
    </div>
</div>

なぜ jQuery が(=現在展開されている$(this)を指している<div ...class="mySet">? .)$(this)$(this).next()

ご協力いただきありがとうございます!

4

1 に答える 1

0

そのため、少しいじった後、次のハック/回避策を思いつきました。

$(document).ready(function() {
    $(".mySet").bind('expand', function (event, ui) {
        /* I'm just creating a new var "myDiv" which points to my current div (so in a 
        way "myDiv" is just a copy of "this" */
        var myDiv = $("#"+$(this).attr('id'));
        var myP = myDiv.find('p:first');

        // Works as expected, prints "I'm the collapsible set content for section 1."
        console.log(myP.text());
    });
});
于 2013-01-19T20:33:34.390 に答える