我遇到的问题可能由多种原因引起,因此,首先是场景。我正在为一个已有大约 12 年历史的新闻存档系统重建一个导航界面。所以,一些遗留问题。我正在使用 php 和 jquery 的组合。
界面截图
数据:
平面文件结构...
目录 - 2015
文件:4-1-2015.dat + 30-1-2015.dat + 等
目录 - 2014
文件:- + 等
每个 *.dat 文件都包含该日期新闻通讯的 html。
在界面上,每个月日都有自己的ID,根据常见的class="linky"的文件结构设置,例如:id="4-1-2015"= day-month-year {.dat稍后添加}
PHP 构建文件数组;下面的片段 [var = 列表]
[2015] => Array
[1] => Array ~january
[0] => 4
[1] => 30
[2] => Array ~ february
[0] => 18
[3] => Array
[0] => 9 etc.
再次使用 PHP 构建第一个屏幕。
警报(见下文)对此效果很好。
然后是 JQUERY...
$(document).ready(function() {
var dataArray = <?php echo json_encode($listing); ?>; // the full array
var yearArray = <?php echo json_encode($yearList); ?>; // just years
var newDate = parseInt($("#navYear").text(), 10)-1;
$.each(dataArray[$("#navYear").text()], function(index, days) { // index=Month value=Day
dataArray[$("#navYear").text()][index].sort(function(a, b){return a-b}); // numerical order
dayings = days.toString().split(','); // monthLinks = [1] 4,19 [2] 4,18,26 [3] 20
for ( var d = 0; d <dayings.length; ++d ) {
monListing = monListing+'<span class="linky" id="'+dayings[d]+'-'+index+'-'+newDate+'">'+monArray[index-1]+' '+dayings[d]+'</span>';
}
}); // end each...
$(".linky").click(function() {
dataLink = $(this).attr("id");
// dataLink = this.id;
alert(dataLink);
});
}); // end doc ready
正如我所提到的,PHP 构建会产生一个警报。而js则没有。
FF 检查器清楚地显示 id 已设置为预期类别。但没有任何警觉。
我尝试将所有 monListing 值预先设置为整数和字符串。例如。
var everyDay = parseInt(dayings[d], 10);或:
var everyDay = dayings[d].toString();
我尝试将“-”更改为“_”
将 id 设置为 'asd'
多种排列……我认为可能是错误的。
我找不到解决方案!!
这里有什么对你来说是显而易见的吗?
即使是最晦涩的建议也会受到欢迎。谢谢。
最佳答案
看起来 .linky
是您使用代码创建的动态元素,因此您需要使用 .on
来启用 click
事件:
$("body").on('click', '.linky', function() {
关于jquery - 点击函数获取id失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30067074/