2013-02-23 65 views
1

如何讓jquery將特定範圍的值發佈到php,然後獲取特定div的值?我想要這樣的事情:點擊類「more」的跨度,從這個li到php發佈值,然後通過jquery獲得id爲「test」的div的值。將特定值發佈到jQuery的特定div

在這裏,我有這樣的代碼,PHP給了我。如果需要,我可以爲元素添加唯一的「id」。

<li> 
    <span class="word">one word</span> 
    <span class="numb">1</span> 

    <span class="more">more</span> 
    <div id="test"></div> 
</li> 
<li> 
    <span class="word">another word</span> 
    <span class="numb">13</span> 

    <span class="more">more</span> 
    <div id="test"></div> 
</li> 

這個問題可以用這個jQuery我只張貼含有類第一跨度「.word」但不是它,我想只有跨越其中跨度爲張貼。並獲取值不是再次與id「test」的第一個div,但在點擊跨度的div。我的jQuery的代碼是:

$('.more').live("click",function() { 

var ID = $('.word').test(); 
var DI = $('.numb').text(); 


     $.ajax({ 
      type:"POST", 
      data: "value="+ ID + "&numb="+ DI, 
      cache: false, 
      url: "more.php", 
      success: function(msg){ 
       $('#test').html(msg).fadeIn('slow'); 
      }    
     });  
}); 

通過添加var ID = $(this).attr("id");,而不是var ID = $('.word').test();到jQuery和到PHP <span id="<?php echo $word; ?>" class="more">more</span>我可以張貼字的獨特價值。但其他價值呢?主要問題是發佈到下一個div,其中「span」按鈕是「more」。

回答

2
var ID = $('.word').test(); 

var ID = $('.word').text(); 

更換也請使用jQuery的.on函數,而不是作爲.live.live棄用。

完整的jQuery代碼

$(function() 
{ 
    $('.more').on("click",function() 
    { 
     var clickedDiv = $(this); 
     var ID = clickedDiv.parent().find('.word').text(); 
     var DI = clickedDiv.parent().find('.numb').text(); 

     $.ajax(
     { 
      type:"POST", 
      data: "value="+ ID + "&numb="+ DI, 
      cache: false, 
      url: "more.php", 
      success: function(msg) 
      { 
       clickedDiv.find('div[custom_id="test"]').html(msg).fadeIn('slow'); 
      }    
     });  
    }); 
}); 

還有一件事沒有爲DOM重複相同ID

ID必須是唯一的。

爲我所用<div custom_id = "test"></div>

更新HTML

<li> 
    <span class="word">one word</span> 
    <span class="numb">1</span> 

    <span class="more">more</span> 
    <div custom_id = "test"></div> 
</li> 
<li> 
    <span class="word">another word</span> 
    <span class="numb">13</span> 

    <span class="more">more</span> 
    <div custom_id = "test"></div> 
</li> 
+0

謝謝你的幫助,但我有一些問題。發佈跨度的唯一值的第一件事情正在發揮作用。第二個似乎''clickedDiv.find('div [custom_id =「test」]')。html(msg).fadeIn('slow');'不適合我。我有和你一樣的div:'

',我甚至試圖添加到該div唯一的id,但它什麼都不做。 – zmogusnamas 2013-02-23 10:59:58

+0

@zmogusnamas請看到更新的答案我已添加html請確保html與答案中相同。 – 2013-02-23 11:01:58

+0

是的一切都是一樣的。當我嘗試擁有'$('。more')。on(「click」,function()'它根本不工作。我的jquery的版本是1.7.1。也許有可能有一種next()嗎?///我試過'clickedDiv.next().html(msg).fadeIn('slow');'它工作的很好,謝謝! – zmogusnamas 2013-02-23 11:26:55

0

這可以算出來,即使沒有Ajax請求,如果你不這樣做在PHP端的任何事情。 請檢查以下代碼:

在html中使用div代替id。

<li> 
    <span class="word">one word</span> 
    <span class="numb">1</span> 

    <span class="more">more</span> 
    <div class="test"></div> 
</li> 
<li> 
    <span class="word">another word</span> 
    <span class="numb">13</span> 

    <span class="more">more</span> 
    <div class="test"></div> 
</li> 

然後

$('.more').click(function(){ 

var ID = $('.word').text(); 
var DI = $('.numb').text(); 

var Data = "value="+ ID + "&numb="+ DI; 

$(this).closest('.test').html(Data); // use anyone of them 
or 
$(this).sibling('.test').html(Data); // use anyone of them 

}); 

這將很好地工作。這是更新的代碼

+0

有兩個dom具有相同的ID ... – 2013-02-23 10:04:18

+0

查看上面的代碼我編輯它。 div與類而不是id – 2013-02-23 10:09:13

+0

問題是我必須將值發佈到php代碼中,然後通過'success:function(msg)'獲得修改後的值。不幸的是,您的解決方案沒有適合我 : – zmogusnamas 2013-02-23 11:05:24