我試圖獲得實現鑽取列表類功能。javascript代碼執行如果和其他塊
代碼運行良好,.toggle()
,但我的下鑽列表項來自AJAX請求,所以我試圖在.live('click')
事件中編寫基本的自定義切換。
現在的問題是代碼在if
和else
塊中都正在執行。
我的JavaScript代碼如下:
$(document).ready(function(){
var $drillDownListItem = $("li.listItem");
var flag = 0;
var options = {
$this: ""
};
$drillDownListItem.live('click', function() {
options.$this = $(this);
if(!$(this).children("ul").is(":visible"))
{
showChildren(options);
}
else
{
hideChildren(options);
}
});
$drillDownListItem.each(function() {
if ($(this).children("ul").length > 0) {
$(this).css({
"padding-bottom": "0px"
});
$(this).children("ul").hide();
$(this).children("span:first-child").css({
"padding-bottom": "11px"
});
}
});
});
var showChildren = function(options) {
if (options.$this.children("ul").length > 0) {
options.$this.css("background-image", "url(./images/dropDownDown.png)");
options.$this.children("ul").slideDown(500);
//options.$this.children("span:first-child").css({"padding-bottom": "6px", "float": "left"});
}
}
var hideChildren = function(options) {
if (options.$this.children("ul").length > 0) {
options.$this.css("background-image", "url(./images/sideArrow.png)");
options.$this.children("ul").slideUp(500);
//options.$this.children("span:first-child").css({"padding-bottom": "6px", "float": "left"});
}
}
不知道爲什麼發生這種情況,但在調試,
一旦if
塊(showChildren()
)執行完畢,控制跳入else
塊(hideChildren()
),並將$(this)
的值更改爲父項。
你能告訴我們你的HTML爲它創建一個jsfiddle嗎? – KyorCode
聽起來就像你有兩個嵌套的li.listitem元素。可以用'event.stopPropagation();' – Jan