0

#catDeleteがクリックされたときのチェックボックスの値を取得したい。

以下はhtmlコードです

<?php $i=1; do { ?>
<input type="checkbox" value="<?php echo $row_cat['cat']; ?>" class="checkboxcat" id="<?php echo $i; ?>"  name="catcheckbox" style="border:#cccccc 1px solid; background-color:#fff;"><?php echo $row_cat['cat']; ?>
<span id="CatDelete" style="position:relative; left:10px; color:#ff0000; font-size:10px;">Delete</span>
<?php $i++; } while ($row_cat = mysql_fetch_assoc($cat)); ?>

jqueryコード-最初のチェックボックスの値を教えてくれます

$('#CatDelete').click(function(){
alert($('.checkboxcat').attr('id'));
});

助けていただければ幸いです。重複する質問がある場合は検索しましたが、見つかりませんでした。

4

1 に答える 1

1

構造の多くを表示していませんが、チェックボックスはスパンの前の兄弟要素のようです。もしそうなら:

$("#CatDelete").click(function() {
    var val = $(this).prevAll('input').first().val();
    console.log(val);
});

これは、クリックされた要素から始まり、要素を探している兄弟を逆方向に処理しinput、最初の要素を取得して、その値を取得します。

しかし、質問を編集して、ループに入っていると言いました。同じ要素( "CatDelete")を複数持つことはできません。id代わりにクラスを使用するようにスパンを変更してから、そのクラスを使用するように上記を変更する必要があります。したがって、たとえば、クラス「CatDelete」を使用するように変更すると、次のようになります。

// v--- Note the change
$(".CatDelete").click(function() {
    var val = $(this).prevAll('input').first().val();
    console.log(val);
});

ライブワーキングコピー| ソース

しかし、そのような兄弟要素を探し回らないように、おそらく構造を少し調整すると思います。のように、各ペア(チェックボックスとボタン)をコンテナ内に配置するとdiv、もう少し簡単に一致するものを見つけることができますinput

var val = $(this).closest('div').find('input').val();

例えば

$(".CatDelete").click(function() {
    var val = $(this).closest('div').find('input').val();
    console.log("The value for the checkbox is: " + val);
});

ライブワーキングコピー| ソース

于 2012-11-25T10:08:17.633 に答える