2016-07-05 18 views
0

基本的に私が達成しようとしているのは、div内のtargetDivの中でクリックされたロードリンクです。以下は私が現在使っているスクリプトです。 divの中にページの内容とリンクを読み込みます。

<div id = "targetDiv"></div> 

<script> 
$('document').ready(function() { 
    $('#targetDiv').load('/test.php'); 
}); 
</script> 

だから私がいる問題は、リンクがクリックされたときに targetDivページ全体のロード中にロードされ、ユーザーが元のページから取られ、新しいページに連れて行かれたということです。私が何をしたいのかは、 targetDiv内の新しいページの読み込みです。

+0

[更新]リンクがフレーム内でクリックされたという意味でif​​rameとして動作します。それがわかりやすい場合はdiv内にロードしてください。 – Johnny

+0

あなたのリンクがどのように見えるか教えてください。 – showdev

+0

@showdev 'targetDiv'にロードされた' test.php'ページで確かに 'Home'のように見えます – Johnny

答えて

4

は、デフォルトのイベントを防止し、また再び

$(function(){ 
    $('#targetDiv').on('click', 'a', function(e){ 
     e.preventDefault();// prevent browser from opening url 
     $('#targetDiv').load(this.href);  
    }); 
}); 

これは、実行時

に存在していない将来 <a>を占めるに委譲リスナーです load()へのhrefを使用していますクリックハンドラを持っている必要があります
+0

私はちょうど私がページをロードすることができないので、この正しいを使用して私を確認することはできますか?この行は '$( '#targetDiv')。load( '/ text.php');'を使っていますが、div内には何もロードされていません。 – Johnny

+1

しかし、それは常に同じページを読み込みます。あなたがコンテンツにリンクをロードしたかったと言ったのは、私が理解したことです。 – charlietfl

+0

オハイオ州の権利、thats素晴らしい私もそうすることができます、私は本当に最後の1つの質問を申し訳ありませんが、私はtargetdivの中にロードしたい場合、リンクはどのように見えますか、本当に申し訳ありません。例えばdivの外側にリンクが配置されてdiv内にロードされた場合 – Johnny

1

これがうまくいかない主な理由は、CORSです。 PHP Webサーバーの実行中にコードスニペットを実行しようとすると、シームレスに動作します。

clickイベントのイベントリスナーがありません。 jQueryの

$("#link").click("click", function() { 
    // Do the AJAX request 
    $.ajax({ 
    url: "/text.php" 
    }) 
    .done(function(data) { // data fetched from php file 
    // Load data into div 
    $('#targetDiv').html(data); 
    }); 

    /* 
    // this would also work 
    $("#targetDiv").load('text.php'); 
    */ 
}) 

<div id="targetDiv"></div> 
+1

'load()' OPは '$ .ajax'のショートカットメソッドです – charlietfl

+0

このスクリプトを使用すると、text.phpドキュメントがtargetDivに読み込まれませんか? – Johnny

+0

コンソールには何も生成されません。 @ErikEngervall – Johnny

2

あなたがやろうとしているものに簡単な答えは、バインドクリックイベントは、あなたのターゲットのdiv内のタグを固定して明示的にコンテンツをロードすることである:あなたのid =「リンク」を持っていると仮定すると、そのdivをもう一度。それ別の注意点としては

$("#targetDiv a").click(function() { 
    $('#targetDiv').load(this.href); 
}); 

あなたはこのために行くの要素とすることができる、IFRAMEのような振る舞いを期待されている可能性のように、それはそうです。

+1

これらの要素は実行時に存在しません – charlietfl

+2

クリックイベントで[preventDefault'](https://api.jquery.com/event.preventdefault/)を提案します。ネイティブな方法で。 – showdev

+0

なぜか分かりませんが、ページがdivにロードされていないため、正しく使用しています。 '$("#targetDiv a ")。あなたが正しく理解していれば、そのtext.phpのコンテンツからリンクをクリックしようと思っているのですが(それを仮定すると、(function(){$( '#targetDiv')load( '/ text.php');}); ' – Johnny

関連する問題