我正在使用javascript來動態創建按鈕,其中我設置了所有屬性並將其顯示在我的頁面上。然後使用jQuery實現懸停並單擊邏輯來更改按鈕類的佈局。當按鈕被創建時,它的類佈局就是它應該是的,但是當它懸停或點擊時,它不會像在運行時創建它時那樣改變。動態激活自定義類按鈕
的javascipt的代碼:
function createbutton()
{
var btn = document.createElement("input");
btn.setAttribute("type", "button");
btn.setAttribute("class", "fg-button ui-state-default ui-corner-all");
btn.setAttribute("value", "click!");
btn.setAttribute("onclick", "createbutton()");
theParent = document.getElementById("content");
theParent.appendChild(btn);
}
$(function(){
//all hover and click logic for buttons
$(".fg-button:not(.ui-state-disabled)")
.hover(
function(){
$(this).addClass("ui-state-hover");
},
function(){
$(this).removeClass("ui-state-hover");
}
)
.mousedown(function(){
$(this).parents('.fg-buttonset-single:first').find(".fg-button.ui-state-active").removeClass("ui-state-active");
if($(this).is('.ui-state-active.fg-button-toggleable, .fg-buttonset-multi .ui-state-active')){ $(this).removeClass("ui-state-active"); }
else { $(this).addClass("ui-state-active"); }
})
.mouseup(function(){
if(! $(this).is('.fg-button-toggleable, .fg-buttonset-single .fg-button, .fg-buttonset-multi .fg-button')){
$(this).removeClass("ui-state-active");
}
});
});
在HTML:
<input type="button" onclick="createbutton()" value="CLICK" >
<div id="content">
</div>
有沒有我應該設置另一個屬性,或者我應該做別的事情來激活jQuery函數創建按鈕時?
編輯(更新功能):
$('body').on(
{
mousedown: function()
{
$(this).parents('.fg-buttonset-single:first').find(".fg-button.ui-state-active").removeClass("ui-state-active");
if($(this).is('.ui-state-active.fg-button-toggleable, .fg-buttonset-multi .ui-state-active')){ $(this).removeClass("ui-state-active"); }
else { $(this).addClass("ui-state-active"); }
},
mouseup: function()
{
if(! $(this).is('.fg-button-toggleable, .fg-buttonset-single .fg-button, .fg-buttonset-multi .fg-button')){$(this).removeClass("ui-state-active");}
},
mouseenter: function()
{
$(this).addClass("ui-state-hover");
},
mouseleave: function()
{
$(this).removeClass("ui-state-hover");
}
}, '.fg-button:not(.ui-state-disabled)');
你應該通過JSLint運行你的JS,並考慮你得到的建議。 – ANeves 2012-04-03 12:49:29