2012-02-27 4 views
1

カラーボックスにボタンを追加し、そのボタンをクリックすると、この部分が機能します。 ボタンの1つは、現在表示されている画像をColorbox配列から削除し、存在する場合は次へ進みます。私がこれまで試したどのようなColorboxが開いている間に、Colorboxから画像を動的に削除します。

1)

$(document).ready(function(){ 
cboxLinks = $('a.colorbox').colorbox(cboxOpts); 

$('body').on('click', 'a.remove-from-favorites', function(){ 
    // 'a.remove-from-favorites' is appended to colorbox div. 
    cboxLinks.splice(0,1); // remove first element from cboxLinks collection. 
    $.colorbox.next(); // fails 
}) 
} 

2)

$(document).ready(function(){ 
cboxLinks = $('a.colorbox').colorbox(cboxOpts); 

$('body').on('click', 'a.remove-from-favorites', function(){ 
    // 'a.remove-from-favorites' is appended to colorbox div. 
    $('a.colorbox#id').remove(); // remove element from DOM. 
    $.colorbox.next(); // fails 
}) 
} 

私は$ .colorbox.next()現在の画像が消えるを呼び出す

、唯一のオーバーレイ私はページをリフレッシュすること以外は何もできません。

どうすればこの問題を解決できますか?

答えて

0

cboxLinksは、jQueryのオブジェクトのコレクションである場合slice()代わりのsplice()を使用してみてください:

cboxLinks.slice(0,1); 
+0

実際には、cboxLinksはjQueryオブジェクトのコレクションです。 を使用するcboxLinks.splice(0,1); 私はその配列から最初の要素を削除します。 – dneez

1

私のソリューション。最もエレガントな方法ではないが、それは私のために働く。言葉のカップルで

$('body').on('click', 'a.remove-from-favorites', function(){ 
    // 'a.remove-from-favorites' is appended to colorbox div. 
    toremove = $('a.colorbox#id'); 
    target = (toremove.next().length) ? toremove.next() : (toremove.prev().length)? toremove.prev() : false; 
    toremove.remove(); 

    if (target) { 
     target.find('a.ims-colorbox').trigger('click'); 
    } else { 
     $.colorbox.close(); 
    } 
}); 

  • 隣に表示される画像を決定する任意の左側です。
  • DOMから現在の画像へのリンクを削除します。
  • 画像が残っていない場合は、次の画像のリンクでトリガー「クリック」イベントを表示するか、カラーボックスを閉じる。

もっと良い解決策が見つかったら教えてください。

関連する問題