2016-01-07 39 views
0

我有一個div與編號#id1它包含鏈接。每當我點擊鏈接時,我會進行一次AJAX調用,這也會從服務器返回其他鏈接。它可能注入javascript到dom使用ajax調用後加載?

現在我正在做的是使用JQuery replaceWith()方法,用#id1中的新鏈接替換舊鏈接。通過這樣做,我保持的div這是#id1

我想在這裏實現的是通過點擊div#id1之間的那些新佔用的鏈接從服務器獲得另一堆鏈接。

是否可以編寫這樣的腳本?

<div id = "id1"> 
<ul> 
<li><a href ="test/show/1">link1</a></li> 
<li><a href ="test/show/2">link1</a>link2</li> 
.... 
</ul> 
</div> 
<script> 
    $('#id1 a').on(click, function(){ 
    $.ajax({ 
      url: '/test/test_now?page=' + page, 
      dataType: 'json', 
      success: function(response) { 
        $('#id1').repalceWith(response.links); 
      }, 
      error: function() { 

       alert('An error occurred'); 
      } 
     });</pre> 
+1

是的,這是可能的。沒有看到任何代碼和更具體的信息,很難說其他的東西。 – Pointy

+0

我以爲我已經清楚地解釋了我的問題。 –

+0

它不清楚你需要什麼幫助。 @Pointy對您的問題回答「是」。你可以添加一個小的(儘可能)代碼片段來顯示你已經完成了什麼,並特別指出你不明白的區域? –

回答

1

由於尖說,我認爲你需要更具體,但我認爲是模板工作,我的最愛之一(小尺寸)爲Template7

您在腳本標籤在HTML腳下創建模板是這樣的:

<script id="template" type="text/template7"> 
    <ul> 
    {{#each links}} 
    <li> 
     <a href="{{url}}">{{text}}</a> 
    </li> 
    {{/each}} 
    </ul> 
</script> 

,然後使用jQuery或JS

var template = $('#template').html(); 

// compile it with Template7 
var compiledTemplate = Template7.compile(template); 

// Now we may render our compiled template by passing required context 
var context = { 
    links:[ 
     {text:'Text',url:'http://www.example.com'} 
    ] 
}; 

var html = compiledTemplate(context); 
$('#id1').html(html); 

您可以包含任何你想要的上下文並且每次您收到新鏈接時,只需更新上下文並重新使用已編譯的模板並在「#id1」div中重新替換html即可。請不要忘記將Template7的js腳本文件包含在您的html中

Regards

+0

我不想只更新鏈接,我希望他們使用上面提到的相同腳本。這是有幫助的。 –

+0

我的想法是,當您從ajax調用中收到答案時,您可以更新上下文(您可以將它保存在$ .on之外的對象中),這樣您就可以將所有內容存儲在上下文中,而不是依賴於在DOM元素上,你可以依賴這個上下文 – JorgeGarza