0
<ul id="ulGall">
<li><img src="gaLL/red.jpg"/></li>
<li><img src="gaLL/blue.jpg"/></li>
<li><img src="gaLL/white.jpg"/></li>
<li><img src="gaLL/orange.jpg"/></li>
</ul>

.

$(document).ready(function() {
 x = 0;
 z = $('#ulGall li').length;
});  

.

$('#btnR').click(function() {
    if(x == z) {x = 1;} 
    else {x = x + 1;} // till here everything works  

    alert ($('ulGall').index =x, src attribute // just as description 

つまり - imgsrc属性を教えてください - どこでli index = x

したがって、最初のクリックは次のクリックにする必要がありますgaLL/red.jpg
- オレンジの後 - 再び赤。gaLL/blue.jpg

4

5 に答える 5

1

あなたがすでに受け入れられている答えを持っているにもかかわらず、私は代替案を提供すると思いました:

function clicks(el){
    if (!el) {
        return false;
    }
    else {
        var i = 0;
        clicks = function(el){
            var kids = $(el).find('img').length,
                which = i < kids ? i : i%kids;
            console.log($(el).find('img').eq(which).attr('src'));
            i++;
        };
        clicks(el);
    }
}

$('#ulGall').click(
    function(){
        clicks(this);
    });​

JS フィドルのデモ

そして、わずかに修正された jQuery の少ない関数:

function clicks(el) {
    if (!el) {
        return false;
    }
    else {
        var i = 0;
        clicks = function(el) {

            var imgs = el.getElementsByTagName('img'),
                kids = imgs.length,
                which = i < kids ? i : i % kids;

            console.log(imgs[which].src);
            i++;
        };
        clicks(el);
    }
}

JS フィドルのデモ

于 2012-12-08T20:38:02.273 に答える
1
$('#btnR').click(function() {
    if(x == z) {x = 1;} 
    else {x++}   
    var source=$("#ulGall li").eq(x).next("img").attr("src");
    alert(source);
});

ここでのトリックは、インデックスに基づいて要素を選択する .eq() を使用することです。次のように、セレクターから直接インデックスで要素を選択することもできます。

$("#ulGall li:eq(0)")
于 2012-12-08T20:20:33.073 に答える
1

:eqjQueryのセレクターが使えます。

$('#ulGall li:eq(0) img').attr('src')​
于 2012-12-08T20:20:34.983 に答える
1

次のように、最初の li 内の img の「src」属性を取得できます。

$("#ulGall li").eq(0).next("img").attr("src");

.eq() 関数の数値によって、どの li 要素が対象となるかが決まります。最初の要素のインデックスは 0 です。

于 2012-12-08T20:18:33.560 に答える
0

完全を期すために、ここには適切な jQuery の代替手段がないようです。

$('button').each(function(){
    var idx = 0, $gallery = $("#ulGall").find("img");
    $(this).click(function(){
        var src = $gallery.eq(idx).attr("src");
        idx = (idx == $gallery.length - 1) ? 0 : idx + 1;
    });
});​

ライブの例。

于 2012-12-08T21:21:49.860 に答える