<div id="CategoriesViewContainer" class="categoriesViewContainer">
<div id="CategoriesViewInner" class="categoriesViewInner">
...
<input type="image" name="ctl00$MainContent$Categories$ctl03" class="functionButton deleteCategoryButton" OBJECTID="6c45226c-0152-4e12-826e-4d3733c241cb" src="../Resources/Icons/64x64/_blank.png" alt="Del" onclick="return confirm('Are you sure want to delete a category Universe?');" />
<input type="submit" name="ctl00$MainContent$Categories$ctl04" value="Universe" class="categoryButton romamaColor0" OBJECTID="6c45226c-0152-4e12-826e-4d3733c241cb" />
<input type="image" name="ctl00$MainContent$Categories$ctl05" class="functionButton editCategoryButton" OBJECTID="6c45226c-0152-4e12-826e-4d3733c241cb" src="../Resources/Icons/64x64/_blank.png" alt="Edit" />
What I want is that when the user hovers the category button the control buttons appear, like delete button:
for (int i = 0; i < categories.Count; i++)
{
var category = categories[i];
Panel categoryPanel = new Panel();
...
Categories.ContentTemplateContainer.Controls.Add(categoryPanel);
var deleteButton = new ImageButton();
deleteButton.ID = "deleteCategory" + i;
...
categoryPanel.Controls.Add(deleteButton);
var categoryCtrl = new Button();
...
categoryPanel.Controls.Add(categoryCtrl);
categoryPanel.Attributes.Add(
"onmouseover", String.Format(@"$get(""deleteCategory{0}"").src=""../Resources/Icons/64x64/circle-delete.png"" ", i));
categoryPanel.Attributes.Add(
"onmouseout", String.Format(@"$get(""deleteCategory{0}"").src=""../Resources/Icons/64x64/_blank.png"" ", i));
}<div onmouseover=" $get("deleteCategory0").src="../Resources/Icons/64x64/circle-delete.png" "
onmouseout=" $get("deleteCategory0").src="../Resources/Icons/64x64/_blank.png" ">
Now what I had to do in pure JavaScript added in the separate file:
1. Handle onload event.
addEvent(window, "load", initialize);
this required writing this addEvent function:
function addEvent(eTarget, sEvent, fHandler)
{
// Standard event registration method
if (eTarget.addEventListener)
{
eTarget.addEventListener(sEvent, fHandler, false);
}
// IE8 and earlier
else if (eTarget.attachEvent)
{
eTarget.attachEvent("on" + sEvent, fHandler);
}
}
2. Find all category panels and bind their events to delete buttons:
function bindEventHandlersToCategories()
{
if (document.getElementsByClassName)
{
var categoryPanels = document.getElementsByClassName("categoryPanel");
for (var i = 0; i < categoryPanels.length; i++)
{
var categoryPanel = categoryPanels[i];
var deleteButtons = categoryPanel.getElementsByClassName("deleteCategoryButton");
bindDeleteCategoryButtonsOnCategoryEvents(categoryPanel, deleteButtons);
}
}
// IE 8
else if (document.querySelectorAll)
{
var categoryPanels = document.querySelectorAll(".categoryPanel");
for (var i = 0; i < categoryPanels.length; i++)
{
var categoryPanel = categoryPanels[i];
var deleteButtons = categoryPanel.querySelectorAll('.deleteCategoryButton')
bindDeleteCategoryButtonsOnCategoryEvents(categoryPanel, deleteButtons);
}
}
// IE 7 and older
else
{
var categoryPanels = getElementsByClassName("categoryPanel");
for (var i = 0; i < categoryPanels.length; i++)
{
var categoryPanel = categoryPanels[i];
var deleteButtons = getElementsByClassName("deleteCategoryButton", categoryPanel);
bindDeleteCategoryButtonsOnCategoryEvents(categoryPanel, deleteButtons);
}
}
}
function bindDeleteCategoryButtonsOnCategoryEvents(categoryPanel, deleteButtons)
{
for (var i = 0; i < deleteButtons.length; i++)
{
addEvent(categoryPanel, "mouseover", function ()
{
var button = deleteButtons[i];
return function ()
{
button.src = "../Resources/Icons/64x64/circle-delete.png";
}
} ());
addEvent(categoryPanel, "mouseout", function ()
{
var button = deleteButtons[i];
return function ()
{
button.src = "../Resources/Icons/64x64/_blank.png";
}
} ());
}
}
function getElementsByClassName(sClassNamesToFind, eParent)
{
// Define search scope
var eStartElement = eParent;
if (!eStartElement)
{
eStartElement = document;
}
var aClassNamesToFind = sClassNamesToFind.split(/\s+/);
var aSelectedElements = new Array();
for (var i = 0; i < eStartElement.all.length; i++)
{
var eElement = eStartElement.all[i];
var sElementClassName = eElement.className;
var bInclude = true;
for (var j = 0; j < aClassNamesToFind.length; j++)
{
var oPattern = new RegExp("\\b" + aClassNamesToFind[j] + "\\b");
if (sElementClassName.search(oPattern) == -1)
{
bInclude = false;
}
}
if (bInclude)
{
aSelectedElements.push(eElement);
}
}
return (aSelectedElements)
}
Forget about this and start learning jQuery? Is this what I should do?
No comments:
Post a Comment