我正在为eBay类别制作类别树选择 我有一个选择框...
<div id="div_firstCat">
<select id="slct_firstCat" name="slct_firstCat" size="33">
<option value="353">Antiques</option>
<option value="550">Art</option> ... and so on..
</select>
</div>
<div id="div_secondCat"></div>
我正在使用以下JQuery函数将数据发布到我的PHP应用程序,这将返回另一个Select框,具体取决于所选的第一个类别(上图)。
// First Level Categories
$("#slct_firstCat").change(function(){ // On change of slct_firstCat
var actionRequested = "AJAX_getCats"; // My personal PHP Identifer
var url = "index.php"; // Post to index.php
var catId = $("#slct_firstCat").val(); // Get the CatID from the select box.
// Post this data to PHP and return the data into #div_secondCat
$.post(url, {AJAX_Action: actionRequested, categoryId: catId, categoryLevel: 1},
function(data){
$("#div_secondCat").html(data);
});
// End of Function getCats
});
PHP文件返回此选择框,与上面的名称相同但名称不同。
<select id="slct_secondCat" name="slct_secondCat" size="33">
<option value="353">Sub-Cat of Antiques</option>
<option value="550">Sub-Cat of Antiques</option> and so on..
</select>
现在,当我尝试通过JQuery从“slct_secondCat”(通过AJAX加载选择)获取选项值时,它没有得到选项值,所以我无法进一步向下导航到猫树。
这是第二类帖子的JQuery函数。
// Second Level Categories
$("#slct_secondCat").change(function(){
var actionRequested = "AJAX_getCats";
var url = "index.php";
var catId = $("#slct_secondCat").val();
$.post(url, {AJAX_Action: actionRequested, categoryId: catId, categoryLevel: 2},
function(data){
$("#div_thirdCat").html(data);
});
// End of Function getCats
});
当我查看页面的源代码时,在加载了AJAX的数据之后,div_secondCat不显示源代码中的任何内容,即使div已经加载了数据,JQuery也会将数据从帖子返回到div并没有更新页面的源代码。
所以基本上,我通过eBay网络服务从我的PHP文件中获取类别,我想导航到我想要的最终类别,并能够通过JQuery选择它。
答案 0 :(得分:1)
尝试
// Second Level Categories
$("#slct_secondCat").live("change", function(){
另外:点击“查看页面来源”只会显示原始HTML文档。您需要检查Firebug或Webkit Inspector以查看DOM中的实际情况。
答案 1 :(得分:1)
当我查看页面的源代码时,在加载AJAX之后的数据
如果您正在谈论“查看源代码”或类似内容,那是因为它会显示页面的实际来源,而不是DOM 现在的外观。为此,您需要一个合适的调试器。幸运的是,they're thick on the ground和免费。
关于为什么你没有看到change
事件:你什么时候运行你的代码来连接它?因为这一行:
$("#slct_secondCat").change(...
...如果元素已经,则只会挂钩处理程序。如果没有,则处理程序不会挂起。您可以在之前创建元素的ajax调用完成后调用该函数将其挂起,或者使用live
(或者更好,delegate
)。
$("#slct_secondCat").live('change', ...
或
$("#div_secondCat").delegate("#slct_secondCat", 'change', ...
(请注意,最后一个我们在初始选择器中使用div_secondCat
,然后在其上调用delegate
。)