0

私は codeigniter を使用しており、ページにほぼ 5 つの div があり、それらのすべてが php によって生成されたものと同じ ID を持っています。ボタンとアンカータグがあります。どちらも、クリックすると同じ jQuery 関数を呼び出します。

/*This div is in foreach*/
<div id="rev">

/*Here are 2 input fields*/
<input type="hidden" id="product_id" name="product_id" value="<?php echo $value['id']; ?>" />
<input type="hidden" id="user_id" name="user_id" value="<?php echo $this->session->user_data('user_id'); ?>" />

<p id="total_rev"><?php echo $value['total_review']; ?> Reviews</p>
<input type="button" id="write_review" value="Write a review..." />
</div>

問題はここから始まります: jQuery 関数で user_id と product_id を取得する必要があるため、2 つの非表示の入力があります。両方の入力は、ボタンとアンカーと同じ親 div の子です。しかし、すべてのページで同じ投稿が 5 回あり、すべての投稿で user_id と product_id が異なります。

私はjQueryが初めてです。ボタンがクリックされたのと同じ div に関連する user_id と product_id を取得する方法を知りたかっただけです。

$('document').ready(function() {
$('#write_review').click(function() {
    var product_id, user_id;
    var hidden_elemets = $(this).parent().siblings('input:hidden');
    $(hidden_elemets).map(function(){
        if($(this).name == 'res_id')
            alert(this.value);
    });
});
});

これは私が今まで持っているJQuery関数です

非表示の入力を使用する以外に方法はありますか? 啓発してください!

私の質問を理解していただければ幸いです。

4

2 に答える 2

3

使う必要は全くありませんparent()。に固執するだけsiblings()です。HTML コンテンツを見てください。

<div id="rev"> <!-- The parent element -->
    <input type="hidden" /> <------
    <input type="hidden" />       |
                                  | These are all siblings of each other
    <p id="total_rev"></p>        |
    <input type="button" /> <------
</div>

それを取得するparent()siblings()、親に戻ってから#rev、イベント ハンドラーの兄弟ではなく、IT の兄弟を再度検索します。

を使用するだけsiblings()です#write-review

var $this = $(this),
    product_id = $this.siblings('#product_id').val(),
    user_id = $this.siblings('#user_id').val(),
    hidden_elements = $this.siblings('input:hidden');

jsフィドル

非表示の入力に代わるものがある限り? いいえ、そうではありません。deceze がこの投稿で述べているように:

ただし、データベースに入力する前に適切に (再度) 検証する限り、非表示の HTML 入力によってセキュリティ上の問題が発生することはありません。

于 2013-06-30T07:15:40.640 に答える
1

私は通常、.parent()または.closest(:selector)

これは両方を示すjsfiddleです

http://jsfiddle.net/xBfvp/

于 2013-06-30T06:49:12.090 に答える