jquery隐藏最近的按钮

时间:2016-04-08 10:46:36

标签: javascript jquery

我正在学习jQuery而且我一直坚持这个。

我想在输入值为200时隐藏button,但也有其他输入。这个问题早先被问过,但在我的案例中我无法弄清楚。



$("document").ready(function() {
  setTimeout(function() {
    var test = $('.input-text').val();
    if (test = 200) {
      $('button').hide();
    }
  }, 10);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="first">
  <input class="input-text qty text" type="number" readonly="" value="200">
  <button>
    Hide me
  </button>
</div>

<div class="second">
  <input class="input-text qty text" type="number" readonly="" value="300">
  <button>
    Hide me
  </button>
</div>

<div class="third">
  <input class="input-text qty text" type="number" readonly="" value="400">
  <button>
    Hide me
  </button>
</div>
&#13;
&#13;
&#13;

5 个答案:

答案 0 :(得分:3)

尝试以下。

&#13;
&#13;
$("document").ready(function() {
    setTimeout(function() {
        $('.input-text').each(function() {
            if (this.value == 200) {
                $(this).next('button').hide();
            }
        });
    }, 10);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="first">
    <input class="input-text qty text" type="number" readonly="" value="200">
    <button>
        Hide me
    </button>
</div>

<div class="second">
    <input class="input-text qty text" type="number" readonly="" value="300">
    <button>
        Hide me
    </button>
</div>

<div class="third">
    <input class="input-text qty text" type="number" readonly="" value="400">
    <button>
        Hide me
    </button>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

您的逻辑中存在一些问题。

  • $('.input-text + button').filter( function() { return $(this).prev().val() == 200; }).hide(); 是不必要的
  • setTimeout会返回一个与int进行比较的字符串,这会产生一些不可靠的结果。
  • 有多个输入元素,因此您需要单独评估它们的值。
  • 您隐藏了所有val()元素,您需要遍历DOM才能找到与button相关的button

话虽如此,这应该适合你:

&#13;
&#13;
input
&#13;
$("document").ready(function() {
  $('.input-text').each(function() {
    if (parseInt($(this).val(), 10) == 200) {
      $(this).next('button').hide();
    };
  });
});
&#13;
&#13;
&#13;

答案 2 :(得分:1)

你有很多问题。

var test = $('.input-text').val();只检索第一个value的{​​{1}}

.input-text分配if (test = 200)而不是评估(test = 200)。

==会隐藏页面上的每个按钮。

您可以过滤按钮,并返回之前输入值为200的按钮,然后隐藏它们:

$('button').hide();

Here's a fiddle

答案 3 :(得分:0)

使用jQuery.nearest

<?php

if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    $id = $_GET['id'];
    require('adminpanel/includes/application_top.php');
    $sql = "SELECT * FROM drug_reviewpage WHERE fld_product_id='" . $id . "'";
    $r = mysql_query($sql);
    $res = mysql_fetch_array($r);
    $result = array();
    array_push($result, array(
        "fld_review_message" => $res['fld_review_message'],
        "fld_fullname" => $res['fld_fullname'],
        "fld_rate" => $res['fld_rate'],
        "fld_date" => $res['fld_date']  
    ));
    echo json_encode(array("result"=>$result));
    mysql_close($conection);
}
?>

答案 4 :(得分:0)

$("document").ready(function() {
    setTimeout(function() {
       $('.input-text').each(function(){
       var test = $(this).val();
       if(test == 200) {
          $('.input-text').next("button").hide();
       }
});

    },10);
});

您需要检查符合.input-text条件的所有next()的兄弟姐妹。

next()根据条件(if .val == 200)选择所选元素的第一个兄弟。然后它让兄弟姐妹离开了。

此外,您应该使用.input-text测试所有each()元素。