0

我有一个下拉菜单,在链接旁边我有 javascript 生成的“+”和“-”,现在是我的问题。如何更改自定义图像上的“+”和“-”?“+”是我的菜单关闭时,“-”是菜单展开时。这是代码:

$(function() {
// hide all the sub-menus
$("span.toggle").next().hide();
$(".current").parents("li ul").show();


// add a link nudging animation effect to each link
$("#jQ-menu a, #jQ-menu span.toggle").hover(function() {
    $(this).stop().animate( {
        //paddingLeft:"10px",
        color:getElementById("#jQ-menu a, #jQ-menu span.toggle").color
    }, 300);
}, function() {
    $(this).stop().animate( {
        paddingLeft:"0",
        color:getElementById("#jQ-menu a, #jQ-menu span.toggle").color,
    }, 300);
});
$("#jQ-menu li.current a").hover(function() {
    $(this).stop().animate( {
        //paddingLeft:"10px",
        color:getElementById("#jQ-menu li.current a").color
    }, 300);
}, function() {
    $(this).stop().animate( {
        paddingLeft:"0",
        color:getElementById("#jQ-menu li.current a").color,
    }, 300);
});

// set the cursor of the toggling span elements
$("span.toggle").css("cursor", "pointer");

// prepend a plus sign to signify that the sub-menus aren't expanded
$('span.toggle').each(function(){
  if($(this).next().find(".current").html() != null){
    $(this).prepend("- ");
  }else{
     $(this).prepend("+ ");
  };
            });
// add a click function that toggles the sub-menu when the corresponding
// span element is clicked
$("span.toggle").click(function() {

    $(this).next().toggle(1000);
        // switch the plus to a minus sign or vice-versa
        var v = $(this).html().substring( 0, 1 );
        if ( v == "+" ){
            $(this).html( "-" + $(this).html().substring( 1 ) );
            var li = $(this).parent().siblings('li');
            $('span.toggle', li).each(function(){
                var v = $(this).html().substring( 0, 1 );
                if ( v == "-" ){
                $(this).html( "+" + $(this).html().substring( 1 ) );
                $(this).next().toggle(1000);
                }
            });
        } else if ( v == "-" )
            $(this).html( "+" + $(this).html().substring( 1 ) );
});
});
4

1 回答 1

0

预先添加图像 html 标记?

if($(this).next().find(".current").html() != null){
    $(this).prepend(
        $('<img />').attr({
            'src': 'plus.gif',
            'alt': '', 
            'height': '25'
        })
    );
} else {
     $(this).prepend(
        $('<img />').attr({
            'src': 'minus.gif',
            'alt': '', 
            'height': '25'
        })
    )
};

编辑:我刚刚注意到您检查了 html 子字符串 1 的+or -。您可以只为上面的这些图像添加一个 id 属性并检查元素的长度。

于 2013-06-10T10:13:27.893 回答