jQuery:on change得到最接近的元素?

时间:2015-02-28 14:00:12

标签: javascript php jquery html

我正在尝试使用jquery来获取最接近输入字段的元素,这样我就可以使用元素的text / html作为输入字段的值。

我的jquery看起来像这样:

<script>
jQuery("[name=currencies]").val(Currency.currentCurrency).change(function() {

 $(".moneyPrice").val($(this).closest('.mypro').find($("span.money").text()));

});
</script>

正在动态创建span.money

我的HTML看起来像这样:

<div align="center" class="mypro" style="position:relative; width:270px; height:570px; border:solid 1px #CCC; margin:10px; float:left; overflow:hidden; padding:5px;">

<a class="overlay" href="product.php"></a>

<!--<a class="overlayBtns" href="">Quick View</a>-->

<a class="overlayAdd" href="javascript:{}" onclick="form'.$id.'.submit();"><i class="fa fa-shopping-cart"></i>
Add To Basket</a>


<img width="100%" src="product_images/'.$id.'Image1.jpg" alt=""  />


<p style="padding:2px;">'.$product_name.'</p>
<p style="padding:2px;">'.$manu.'</p>

    <div style="padding:5px;" class="price">

      <div class="prod-price"><span class=money>£'.$price.'.00</span></div>

        <form id="form'.$id.'" name="form1" method="post" action="cart.php">
        <input type="hidden" name="pid" id="pid" value="'.$id.'" />
        <input type="text" name="" class="moneyPrice" value="" />
      </form>   
    </div>

</div>

上面的HTML代码,使用PHP创建dynamically

所以基本上,当select选项改变时,我的jquery代码会激活。但是我在输入字段[object object]中得到了这个。

如果我将我的jquery代码更改为:

$(".moneyPrice").val($("span.money").text());

它会在我的输入字段中显示span.money文本,但问题是它会在所有输入字段中显示所有动态创建的span.money文本。

因此,我需要获取最接近的span.money.moneyPrice输入字段,然后将span.money显示在最近的.moneyPrice输入字段中。

很抱歉,如果这有点令人困惑,我希望得到你们的帮助。

任何帮助将不胜感激。

编辑:

<select id="currencies" name="currencies">


   <option value="GBP" selected="selected">GBP</option>
  <option value="USD" >USD</option>


    <option value="NGN">NGN</option>







    <!--<option value="AUD">AUD</option>



    <option value="SGD">SGD</option>-->



    <option value="EUR">EUR</option>


</select>

编辑:

我已经创建了一个有效的jsfiddle,因此您可以看到问题:

http://jsfiddle.net/v6v146sv/

2 个答案:

答案 0 :(得分:0)

您的语法不太正确,可能是因为尝试在一行中做太多

$(".moneyPrice").val($(this).closest('.mypro').find($("span.money").text()));

应该是

$(".moneyPrice").val($(this).closest('.mypro').find("span.money").text());

请注意,您的find()与

相同
var txt = $("span.money").text();// is not a selector
find(txt) // returns jQuery object not a text value but `txt` isn't a valid selector either

答案 1 :(得分:0)

您需要做的是更改

$(".moneyPrice").val($(this).closest('.mypro').find($("span.money").text()));

$(".moneyPrice").val( $(this).closest('.mypro').find("span.money").text() );

我还注意到html代码中的一些重大错误。当在html代码中有变量时,你将不得不使用&#34; php start&#34;和&#34; php结束&#34;。

像...一样的东西。

我想要<?php echo $nr_of_icecreams;?>冰淇淋

不是

我希望$nr_of_icecreams看起来像你在代码中所做的那样