我的最近()代码不起作用。为什么?

时间:2018-03-28 07:37:57

标签: jquery

请看下面的代码段。我有以下代码结构。

使用`parent()'

的工作代码段

Host $name
    HostName $hostname
    User $username
    IdentityFile $pathtoFile
private String saveToInternalStorage(Bitmap bitmapImage){
    ContextWrapper cw = new ContextWrapper(getApplicationContext());
     // path to /data/data/yourapp/app_data/imageDir
    File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
    // Create imageDir
    File mypath=new File(directory,"profile.jpg");

    FileOutputStream fos = null;
    try {           
        fos = new FileOutputStream(mypath);
   // Use the compress method on the BitMap object to write image to the OutputStream
        bitmapImage.compress(Bitmap.CompressFormat.PNG, 100, fos);
    } catch (Exception e) {
          e.printStackTrace();
    } finally {
        try {
          fos.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
    } 
    return directory.getAbsolutePath();
}
function ModifyValue(name, current){
    var qty = $(current).parent().find('input');
    if ($(current).hasClass('increment')) {
        qty.val(parseInt(qty.val())+1);
    } else {
        qty.val(parseInt(qty.val())-1);
    }          
}

当我使用像input { width: 60px;height: 23px;padding-left: 20px; }这样的<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="input-group quantity-div"> <button type="button" class="pls altera" onclick="ModifyValue('testname', this)"> - </button>&nbsp; <input type="text" name="quantity" value="1" class="inputbox">&nbsp; <button type="button" class="pls altera increment" onclick="ModifyValue('newname', this)"> + </button> </div>选择器时,上面的代码段工作正常。但是当我尝试使用parent()之类的$(current).parent().find('input')时,它无效。

使用closest()

的不工作代码段

$(current).closest('input')
closest()
function ModifyValue(name, current){
    var qty = $(current).closest('input');
    if ($(current).hasClass('increment')) {
        qty.val(parseInt(qty.val())+1);
    } else {
        qty.val(parseInt(qty.val())-1);
    }          
}

最接近的是不会找到像我上面代码那样最近的元素或者我做错了什么?帮助我理解这一点。

1 个答案:

答案 0 :(得分:2)

.closest()搜索元素的父母 AND ,而不是兄弟姐妹。

如果您想在同一级别选择input,可以使用.siblings()

$(current).siblings('input')

&#13;
&#13;
function ModifyValue(name, current) {
  var qty = $(current).siblings('input');
  if ($(current).hasClass('increment')) {
    qty.val(parseInt(qty.val()) + 1);
  } else {
    qty.val(parseInt(qty.val()) - 1);
  }
}
&#13;
input {
  width: 60px;
  height: 23px;
  padding-left: 20px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="input-group quantity-div">
  <button type="button" class="pls altera" onclick="ModifyValue('testname',this)"> - </button>&nbsp;
  <input type="text" name="quantity" value="1" class="inputbox">&nbsp;
  <button type="button" class="pls altera increment" onclick="ModifyValue('newname',this)"> + </button>
</div>
&#13;
&#13;
&#13;