注: あなたが「ただの」jQuery 開発者である場合、この投稿の一部は少し複雑に見えるかもしれません (Base62 エンコーディングなど) - 実際はそうではありません。より技術的な詳細は質問に関連していますが、核心はjQueryが大文字のものを選択しないということです。ありがとう!
こんにちは皆さん!
だから私はAjaxによって生成されたリストを持っています。リストのタイトルをクリックすると、その ID が送信され、リスト アイテムがその横に表示されます。標準的なもの。
auto_increment ID を使用しているため、ユーザーにデータベース内の送信数を知られたくありません。そのため、Base62 にエンコードしてから、再度デコードしています。[これは問題とは無関係であることに注意してください] 。
私のリストが生成されると、このコードが出力されます。jQuery と一緒に CodeIgniter PHP を使用しています - これはデータベース結果のループにあります。$this->basecrypt->encode()
は、整数 (ID) を Base62 に変換する単純な CI ライブラリです。
$('#title-<?php echo $this->basecrypt->encode($row->codeid); ?>').click(function() {
alert("clicked");
[...]
そして、ページのさらに下に:
<div id="title-<?php echo $this->basecrypt->encode($row->codeid);?>" class="title">
ご覧のとおり、これはすべて同じループで生成されます。出力されたソース コードを表示すると、次のようになります。
$('#title-1T').click[...]
その後<div id="title-1T" [...]
つまり、jQuery には何の問題もないはずですよね? ID の Base62 化を開始するまでは、すべて正常に機能していました。大文字が含まれている場合、jQueryはIDを選択できない/選択しないと思います。
私が間違っていたら許してください-私は比較的言えば、jQueryにかなり慣れていません-しかし、私のポイントをテストするために、私$this->basecrypt->encode()
はBase36に変更しました。以前、使用していた0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
後、使用していた0123456789abcdefghijklmnopqrstuvwxyz
大文字がない場合、jQuery は正常に選択 (およびテスト目的でアラートを表示) できます。
それで、なにかお手伝いできますか?Base36 で数字と小文字だけを使い続けても安全ですか?そうでない場合、jQuery の問題のある選択プロセスについて何ができますか?
ありがとう!
ジャック
編集:以下に、ページのコード例をいくつか示します。
これは、ファイル ajaxlist.php で返されるスクリプトの一部です。これは Ajax から呼び出され、ページが読み込まれた数秒後に表示されます。最初のすぐ近くに追加してalert("clicked");
、それが表示されるかどうかを確認しましたが、残念ながら表示されません... $(document).ready(function() {
$('#title-<?php echo $this->basecrypt->encode($row->codeid); ?>').click(function() {
alert("clicked");
var form_data = {
id: <?php echo $this->basecrypt->encode($row->codeid); ?>
};
$('.resultselected').removeClass('resultselected');
$(this).parent().parent().addClass('resultselected');
$('#col3').fadeOut('slow', function() {
$.ajax({
url: "<?php echo site_url('code/viewajax');?>",
type: 'POST',
data: form_data,
success: function(msg) {
$('#col3').html(msg);
$('#col3').fadeIn('fast');
}
});
});
});
});
</script>
上記のコード (そのすぐ下) と同時に、同じファイルから返されるのは次のとおりです。
<div class="result">
<div class="resulttext">
<div id="title-<?php echo $this->basecrypt->encode($row->codeid);?>" class="title">
<?php echo anchor('#',$row->codetitle); ?>
</div> [.......]
これで問題が解決する場合は、お知らせください。
編集 2:実際の出力がブラウザに返されます。
これは Firebug から取得したもので、ブラウザーに返されたデータ (Ajax) です。
<script type="text/javascript">
$(document).ready(function() {
$('#title-1T').click(function() {
alert("clicked");
var form_data = {
id: 1T };
$('.resultselected').removeClass('resultselected');
$(this).parent().parent().addClass('resultselected');
$('#col3').fadeOut('slow', function() {
$.ajax({
url: "http://localhost:8888/code/viewajax",
type: 'POST',
data: form_data,
success: function(msg) {
$('#col3').html(msg);
$('#col3').fadeIn('fast');
}
});
});
});
});
</script>
<div class="result">
<div class="resulttext">
<div id="title-1T" class="title">
<a href="http://localhost:8888/#"><p>This is an example </p></a> </div>`
<div class="summary">
gibberish summary text </div>
<div class="bottom">
<div class="author">
by <a href="http://localhost:8888/user/7/author">author</a> </div>
<div class="tagbuttoncontainer">
<div class="tagbutton listv">
<span>tag1</span>
</div>
</div>
<!-- Now insert the rating system -->
<div class="ratingswrapper">
<p>4.0</p>
</div>
</div>
</div>
</div>
さあ、それがうまくいかないと言うことはできません... できますか?!