【问题标题】:jQueryUI Selectable (if element hasClass ui-selected) not working?jQueryUI Selectable(如果元素 hasClass ui-selected)不起作用?
【发布时间】:2015-03-18 00:31:25
【问题描述】:

我对 jQuery 很陌生(到目前为止,我有几天的经验),所以我可能会问一个相当愚蠢的问题:

我在使用 jQueryUI 的 .selectable 时遇到了一些问题,我想在右侧列出四个不同的选项卡,而当单击每个选项卡时,左侧会出现不同的图像/文本内容。每次我单击不同的选项卡时,我都需要它来添加新内容,同时从前一个选项卡中删除所有内容(如果单击了一个选项卡)。我的问题是,当我需要它来清除其他预先存在的内容并添加新内容时,它会不断地添加类、按钮和文本。此外,当它第一次运行时,默认选项卡是顶部,因此顶部的内容也应该显示...

以下是我想要实现的目标的直观视图: http://puu.sh/gELQi/211165f55a.png

JSFiddle:http://jsfiddle.net/p5gsby49/8/

下面是我希望添加到每个选项卡的代码,前三行是单击每个选项卡时将添加的代码,然后在单击另一个选项卡时将其删除。

$(".elementOneInfo").addClass("imageClassOne"),
$(".elementOneInfo").append("<button><a href='/clans'>MORE</a></button>");
$(".elementOneInfo").append("<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Cumque, vitae possimus. Quis debitis harum fugiat, placeat, modi nesciunt temporibus. Nesciunt rem necessitatibus, commodi harum a beatae amet consectetur. Porro, quis!</p>");

$(".elementTwoInfo").addClass("imageClassTwo"),
[...]

然后我有 Selectable jQueryUI 本身:

$('#elements').selectable();

我尝试使用 if 语句,例如:

if ($('#elements .elementOne').hasClass('ui-selected')) {
    $(".elementOneInfo").addClass("imageClassOne"),
    [...]
}

&这是我的 HTML

<div class="container elements-wrapper">
    <div class="col-md-12">
        <div class="row">
            <div class="col-md-7 elements-info">
                <div class="elementOneInfo"></div>
                <div class="elementTwoInfo"></div>
                <div class="elementThreeInfo"></div>
                <div class="elementFourInfo"></div>
            </div>
            <div class="col-md-5 elements-titles-wrapper">
                <ul id="elements">
                    <li class="elementOne light ui-widget-content"><h3>Title1</h3></li>
                    <li class="elementTwo dark ui-widget-content"><h3>Title2</h3></li>
                    <li class="elementThree light ui-widget-content"><h3>Title3</h3></li>
                    <li class="elementFour dark ui-widget-content"><h3>Title4</h3></li>
                </ul>
            </div>
        </div>
    </div>
</div>

感谢阅读,我希望有人能启发我如何实现这一点,我已经能够添加我用一个标签发送的视觉图像的外观,但只要我添加将选项卡切换到混合中它只是不起作用。

【问题讨论】:

  • $('#elements li') #elements 不出现在html$("#elements-tiltles li") ?
  • @guest271314 抱歉,我提供了一个示例 id 并忘记更改它,我原来的没有那个错误。
  • 问题不清楚。确切的问题是什么?什么“不工作”? jsfiddle 将是最好的解释。仍在尝试猜测可能出了什么问题...您确定您在$(document).ready() 或之后编写了所有代码吗?
  • api.jqueryui.com/selectable。可以创建 stacksn-ps blog.stackoverflow.com/2014/09/… , jsfiddle jsfiddle.net 吗?
  • @guest271314 我添加了它,因为 col-md-12 的类来自引导程序

标签: javascript jquery jquery-ui selectable


【解决方案1】:

试试

$(document).ready(function () {    
    var text = "Lorem ipsum dolor sit amet,"
               + " consectetur adipisicing elit. Cumque, vitae possimus."         + " Quis debitis harum fugiat, placeat,"
               + " modi nesciunt temporibus. Nesciunt rem necessitatibus,"
               + " commodi harum a beatae amet consectetur. Porro, quis!";

    $('#server-titles li:first').addClass('ui-selected');

    var $one = $('.server-one');
    var $two = $('.server-two');
    var $three = $('.server-three');
    var $four = $('.server-four');

    $('#server-titles').selectable({
        selected: function (event, ui) {
            console.log(event, ui);
            if ($('#server-titles .server-one').hasClass('ui-selected')) {
                $(".server-one-info").addClass("server-one-info-image");
                $(".server-one-info")
                .append("<button><a href='/clans'>MORE</a></button>");
                $(".server-one-info").append("<p>"+text+"</p>");
            }
            if ($('#server-titles .server-two').hasClass('ui-selected')) {
                $(".server-one-info").addClass("server-one-info-image");
                $(".server-one-info")
                .append("<button><a href='/clans'>MORE</a></button>");
                $(".server-one-info").append("<p>"+text+"</p>");
            }

            if ($('#server-titles .server-three').hasClass('ui-selected')) {
                $(".server-one-info").addClass("server-one-info-image");
                $(".server-one-info")
                .append("<button><a href='/clans'>MORE</a></button>");
                $(".server-one-info").append("<p>"+text+"</p>");
            }

            if ($('#server-titles .server-four').hasClass('ui-selected')) {
                $(".server-one-info").addClass("server-one-info-image");
                $(".server-one-info")
                .append("<button><a href='/clans'>MORE</a></button>");
                $(".server-one-info").append("<p>"+text+"</p>");
            }
        }
    });
});

jsfiddle http://jsfiddle.net/p5gsby49/3/

【讨论】:

  • 感谢您的回答,您的演示使其更加清晰,看起来是全面工作的垫脚石 - 但是仍然存在重大问题,这是我不知道完整删除方法的错正确的课程等等。 jsfiddle.net/p5gsby49/8 发生的事情仍然非常令人困惑,当它第一次运行时,我需要第一个选项卡需要显示第一个选项卡内容(.server-one-info),当我单击其他选项卡时,它会不断添加类和文本并重叠其他代码,当我需要它在打开新标签时清除它之前的所有内容时。
  • if ($('#server-titles .server-two').hasClass('ui-selected'))if ($('#server-titles .server-three').hasClass('ui-selected')) 之后的检查块似乎在$(".server-one-info").addClass("server-one-info-image"); ? 处引用.server-one,而不是当前选定的元素class ?
  • 我不太确定你编辑了什么,但是当点击标签时它仍然没有删除内容,如果你去你的 jsfiddle 结果并测试点击标签,它会在下面添加一个背景当前,文本将跳到底部并在其顶部应用新文本以及新按钮,同时保持旧背景和按钮在其上方。我需要它从一个选项卡中删除所有内容并添加另一个选项卡的新内容。参考之前的评论,我在错误之前将它们设置在 jQuery 的不同部分,但现在没有使用。
  • @JoeMethven 是的,可能会进行其他调整以按预期进行渲染;缓存选择器?;更新之前的ui-selectedcssclass?请参阅原始问题标题 "jQueryUI Selectable (if element hasClass ui-selected) not working?" ? .ui-selected 元素出现在 jsfiddle 上方 .selectable() 内的 selected 回调中可用?见stackoverflow.com/help/how-to-ask。也许针对呈现主题的特定主题打开新问题?
  • guest271314 感谢您的帮助,我听取了您的建议并提出了一个新问题,因为问题发生了变化,而我最初提供的信息不够清楚。我希望我目前的信息能帮助更多。 stackoverflow.com/questions/29125511/…
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2020-04-13
  • 2011-05-19
  • 2013-07-12
  • 2015-08-29
  • 2015-09-27
  • 2018-01-27
相关资源
最近更新 更多