获取href

时间:2016-11-03 16:15:37

标签: javascript jquery html

我正在尝试编写一个jquery语句

以下是HTML代码:

<tr role="row" class="odd">
    <td class="variant_title">2014 - CYZ51P/18</td>
    <td class="">1</td>
    <td>
        <input name="price[114][1]" value="265700" class="form-control input_prices unmask" autocomplete="off" type="text">
        <a data-year="2014" data-variant="CYZ51P/18" href="#" class="analyseItemChannel green">
    </td>
</tr>
<tr role="row" class="even">
    <td class="variant_title">2013 - NMR71E22/24</td>
    <td class="">0</td>
    <td>
        <input name="price[111][1]" value="0" class="form-control input_prices unmask" autocomplete="off" type="text">
        <a data-year="2013" data-variant="NMR71E22/24" href="#" class="analyseItemChannel green">
    </td>
</tr>

所以,我正在寻找的是当用户点击(a href)时我需要获取输入附近的数据(a href)。

这是我的jquery,以及对我不起作用的内容:

$("a.analyseItemChannel").on('click', function (event)
{
    event.preventDefault();

    price = $('.input_prices', this).val();
    console.log(price);
    price = $(this).closest('.input_prices').val();
    console.log(price);
});

任何建议, 谢谢,

5 个答案:

答案 0 :(得分:2)

在这种情况下,您应该使用prev代替closest

prev获取匹配元素集中每个元素的前一个兄弟。如果提供了选择器,则仅当它与该选择器匹配时才会检索前一个兄弟。

closest对于集合中的每个元素,通过测试元素本身并遍历DOM树中的祖先来获取与选择器匹配的第一个元素。

$("a.analyseItemChannel").on('click', function (event)
{
    event.preventDefault();

    var price = $(this).prev('.input_prices').val();
    console.log(price);
});

答案 1 :(得分:2)

您需要使用jQuery中的prev()函数来访问上一个兄弟

$("a.analyseItemChannel").on('click', function(event) {
  event.preventDefault();
  price = $(this).prev('.input_prices').val();
  console.log(price);
  price = $(this).prev('.input_prices').val();
  console.log(price);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<table>
  <tr role="row" class="odd">
    <td class="variant_title">2014 - CYZ51P/18</td>
    <td class="">1</td>
    <td>
      <input name="price[114][1]" value="265700" class="form-control input_prices unmask" autocomplete="off" type="text">
      <a data-year="2014" data-variant="CYZ51P/18" href="#" class="analyseItemChannel green">A</a>
    </td>
  </tr>
  <tr role="row" class="even">
    <td class="variant_title">2013 - NMR71E22/24</td>
    <td class="">0</td>
    <td>
      <input name="price[111][1]" value="0" class="form-control input_prices unmask" autocomplete="off" type="text">
      <a data-year="2013" data-variant="NMR71E22/24" href="#" class="analyseItemChannel green">A</a>
    </td>
  </tr>
</table>

请关闭</a>代码。

答案 2 :(得分:0)

检查这是否是您想要的(首先导航到父母)

&#13;
&#13;
$("a.analyseItemChannel").on('click', function (event)
    {
    	event.preventDefault();
    
    	price = $(this).prev().val();
    	console.log(price);
    	//price = $(this).closest('.input_prices').val();
    	//console.log(price);
    });
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>

    <tr role="row" class="odd">
    	<td class="variant_title">2014 - CYZ51P/18</td>
    	<td class="">1</td>
    	<td>
    		<input name="price[114][1]" value="265700" class="form-control input_prices unmask" autocomplete="off" type="text" />
    		<a data-year="2014" data-variant="CYZ51P/18" href="#" class="analyseItemChannel green">link1</a>
    	</td>
    </tr>
    <tr role="row" class="even">
    	<td class="variant_title">2013 - NMR71E22/24</td>
    	<td class="">0</td>
    	<td>
    		<input name="price[111][1]" value="0" class="form-control input_prices unmask" autocomplete="off" type="text">
    		<a data-year="2013" data-variant="NMR71E22/24" href="#" class="analyseItemChannel green">link2</a>
    	</td>
    </tr>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

有很多方法可以做到这一点。

$("a.analyseItemChannel").on('click', function (event) {
    event.preventDefault();

    //using siblings()
    var price = $(this).siblings('.input_prices').first().val();
    console.log(price);

    //using prev()
    price = $(this).prev('.input_prices').val();
    console.log(price);       
});

答案 4 :(得分:0)

试试这个,

$(document).on('click','a.analyseItemChannel', function(event){
      event.preventDefault();
      var nextInput = $(this).next().filter('input');
      var prevInput = $(this).prev().filter('input');

      if(nextInput.length > 0){
         var price = nextInput.val();
         console.log(price);
      }
      if(prevInput.length > 0){
         var price = prevInput.val();
         console.log(price);
      }
});