如何从兄弟节点获取数据

时间:2014-12-18 14:26:30

标签: javascript

如何获取点击的div或其他元素中包含的<input>标记的值?例如,在下面的代码中,如果用户点击&#34; Vote Up&#34;或者&#34;投票&#34;,如何获取或设置隐藏的兄弟<input>的价值?

我的代码是:

    <script>
        $(function () {
            $(".up").click(function () {
                var vup = $(this).html();
                var qid = $(this).parent().getElementById("qid").value;;
                document.getElementById("sadas").innerHTML = qid + "<br>" + vup;
            });
        });
    </script>
    <div id="question">
        <input id="qid" value="5" type="hidden">
            <a class="up" title="אם אתה מתחרט על הצבעה זו.">vote up</a>
            <b>0</b>
            <a class="up" title="אם שאלה זו שטוחה או פוגענית או חוזרת על עצמה או פשוטה." style="background-position:0 -220px;">vote down</a>
    </div>
    <div id="question">
        <input id="qid" value="6" type="hidden">
            <a class="up" title="אם אתה מתחרט על הצבעה זו.">vote up</a>
            <b>0</b>
            <a class="up" title="אם שאלה זו שטוחה או פוגענית או חוזרת על עצמה או פשוטה." style="background-position:0 -220px;">vote down</a>
    </div>
    <div id="sadas">sda</div>

3 个答案:

答案 0 :(得分:1)

尝试以下代码

<script>
        $(function () {
            $(".up").click(function () {
                var vup = $(this).html();
                var closestdiv = $(this).closest("div");
                var qid = $(closestdiv).find("input:first").val();
                document.getElementById("sadas").innerHTML = qid + "<br>" + vup;
            });
        });
    </script>

答案 1 :(得分:0)

如评论中所述,id值必须是唯一的。我在这里用课程替换了它们。

你走在正确的轨道上。 find()会在父div中找到与选择器匹配的项目:

&#13;
&#13;
$(function() {
  $(".up").click(function() {
    var qid = $(this).parent().find(".qid").val();
    $('#sadas').
      text(qid).
      append('<br>' + $(this).html());
  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div class="question">
  <input class="qid" value="5" type="hidden">
  <a class="up" title="אם אתה מתחרט על הצבעה זו.">vote up</a>
  <b>0</b>
  <a class="up" title="אם שאלה זו שטוחה או פוגענית או חוזרת על עצמה או פשוטה." style="background-position:0 -220px;">vote down</a>
</div>
<div class="question">
  <input class="qid" value="6" type="hidden">
  <a class="up" title="אם אתה מתחרט על הצבעה זו.">vote up</a>
  <b>0</b>
  <a class="up" title="אם שאלה זו שטוחה או פוגענית או חוזרת על עצמה או פשוטה." style="background-position:0 -220px;">vote down</a>
</div>
<div id="sadas">sda</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

我以正确的方式编辑了html元素

Answer in this fiddle

<div class="question">
            <input class="qid" value="0" type="hidden">
                <a class="up" title="what ever">vote up</a>
                <b>0</b>
                <a class="down" title="what ever" >vote down</a>
</div>
   <hr>
<div class="question">
            <input class="qid" value="0" type="hidden">
                <a class="up" title="whatever">vote up</a>
                <b>0</b>
                <a class="down" title="whatever">vote down</a>
</div>

<script type="text/javascript">
jQuery(".up").click(function () {
            var field = $(this).parent().find('.qid');
            var input_value = field.val();
            var new_value = parseInt(input_value) + 1;                
             field.val(new_value);
            $(this).parent().find('b').html(new_value);
        });
        $(".down").click(function () {
             var field = $(this).parent().find('.qid');
            var input_value = field.val();
            var new_value = parseInt(input_value) - 1;                
             field.val(new_value);
            $(this).parent().find('b').html(new_value);
        });
</script>