私のphpスクリプトは、その画像のチェックボックスが非表示になっている画像を配置します。画像をクリックすると、チェックボックスがオンになります。次に、画像の周囲にアウトラインを配置して、醜いチェックボックスを表示せずに画像が選択されていることを示します。これを行うために、出力された画像ごとにインクリメントして画像IDとして機能する$ iというphp変数を作成しました。次に、IDがJavascript関数に渡され、jqueryセレクターとして呼び出されます。
これはすべて正常に機能しますが、toggleClassイベントが呼び出されると、これまで経験したことのない方法で動作します。最初のクリックでは起動しませんが、2回目のクリックでは、チェックボックスのチェックと同期していない画像の強調表示が行われます。
画像>クリック=ハイライトなし|| チェックボックスがオンになっています。
画像>2回目のクリック=画像が強調表示されます|| チェックボックスがオフになっています。
addClassイベントが呼び出された場合、これが機能し、最初のクリックで強調表示されます。しかし、2回目のクリックで強調表示を削除するように書き直すと、元の問題が元に戻ります。(私は.hasClass()でif elseステートメントを使用してこれを行いました。クラス'highlight'がそれを削除した場合、それ以外の場合はaddclassハイライト...)
HTMLとJSで変数を1に置き換えるだけで問題が発生するため、変数に問題はないようです。
私が使用しているコードをすぐに使用してください:
(この例では、php var $ iが1であるとしましょう。これは、この部分が正常に機能しているときにループなどを書き出すのは少し無意味に見えるためです。クリックすると、強調表示が可能になります。このコードはまだ記述されていないため、問題は発生していません。テストのためにhref =''を削除しました])
HTML / PHP
// for this exmaple $i = 1;
// $id is the images unique id, the one used in the server for the image path
<a class='selectbox' id='hil' style='position:relative;' href='show-image.php?id=$id'>
<div style='display:inline-block; padding:15px;' id=\"$i\" onclick=\"highlight('" . $i . "')\" class='lifted drop-shadow-sq' >
<label for=\"$id\">
<img class='reflect reflect-br' width='150px;' height='150px' src=\"thumb.php?id=$id\">
</label>
<input id=\"$id\" style='display:non;' type='checkbox' class=\"show-man\" name='images[]' value='$id'>
</div>
</a>
Jquery
function highlight(x) {
id = x;
$('#' + id).click(function() {
$(this).toggleClass('highlight');
});
}
CSS
.highlight img {
box-shadow:0 0 10px #5bb1ce;
}
事前の返信ありがとうございます。