【问题标题】:How can I change the color of texts when they are moved to another div将文本移动到另一个 div 时如何更改文本的颜色
【发布时间】:2015-10-19 17:44:50
【问题描述】:

我希望通过在拖放字段中更改其颜色来使可拖动元素更具交互性。但是我还没有想出如何使用当前代码来做到这一点。

这是我的 HTML:

<!-- Begin draggable area -->
            <div class="draggable">
                <div class="row">
                    <div class="col-md-12">
                        <h2 class="window-title">Spectra</h2>
                    </div>
                </div>
                <div class="row">
                    <div class="draggable-spectra">   <!--draggable element-->
                      <h3>Menu</h3>
                      <p class= "element">dasdsa</p>
                    </div>
                    <div class="draggable-spectra"><h3>Content</h3></div>  <!--draggable element-->
                </div>
             </div>
<!-- End draggable -->

            <!-- Begin Drop Area -->
            <div class="droppable-spectra">
                <h2 id="drop">Drop-box</h2>
            </div>
            <!-- end Drop Area -->
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
    <script src="assets/js/drag.js"></script>  <!--js file where I have the code below-->

这是我的 JS 代码(感谢 aSeptik):

$(function() {
$(".draggable-spectra").draggable({
    revert : function(event, ui) {
        // on older version of jQuery use "draggable"
        // $(this).data("draggable")
        // on 2.x versions of jQuery use "ui-draggable"
        // $(this).data("ui-draggable")
        $(this).data("uiDraggable").originalPosition = {
            top : 0,
            left : 0
        };

        // if (event === false){
        //   $(".element").data("color","blue")
        // };
        // return boolean
        return !event;
        // that evaluate like this:
        // return event !== false ? false : true;
    }
});
$(".droppable-spectra").droppable();});

现在它是这样工作的(这是 aSeptik 的一个例子): http://so.devilmaycode.it/revert-a-jquery-draggable-object-back-to-its-original-container-on-out-event-of-d/

但是当它被放置在可拖放框中时,如何更改可拖动框中的文本颜色?我试过 .data() 但它没有用。任何建议将不胜感激。谢谢!

【问题讨论】:

  • 您可能需要在完成拖动时实现回调,它没有记录吗?
  • 你的ifreturn 之后,所以它永远无法到达。但是为什么你认为.data("color", "blue") 会改变文字颜色呢?
  • 您能否添加足够的代码以便我们实际重现您的问题? &lt;!-- begin drop area --&gt;的评论对我们完全没有用。请提供完整 minimal reproducible example
  • @大卫托马斯,我很抱歉。我是 JS 新手,也是这个网站的新手。我认为现在的代码足以重现问题。

标签: javascript jquery html css jquery-ui


【解决方案1】:
$('#element').droppable({
    drop: callback,
    greedy: true
});

我认为你需要实现这样的东西。

http://api.jqueryui.com/droppable/

【讨论】:

    【解决方案2】:

    您可以使用droppable widget的drop事件回调,如下所示:

    $(".draggable-spectra").draggable();
    $(".droppable-spectra").droppable({
      drop: function(e, ui) {
        ui.draggable.css('color', 'blue');
      }
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
    <!-- Begin draggable area -->
    <div class="draggable">
      <div class="row">
        <div class="col-md-12">
          <h2 class="window-title">Spectra</h2>
        </div>
      </div>
      <div class="row">
        <div class="draggable-spectra">
          <!--draggable element-->
          <h3>Menu</h3>
          <p class="element">dasdsa</p>
        </div>
        <div class="draggable-spectra">
          <h3>Content</h3>
        </div>
        <!--draggable element-->
      </div>
    </div>
    <!-- End draggable -->
    
    <!-- Begin Drop Area -->
    <div class="droppable-spectra">
      <h2 id="drop">Drop-box</h2>
    </div>
    <!-- end Drop Area -->

    【讨论】:

    • 非常感谢!我是新手,我知道我现在这样做可能是先进的。但是如果我只想用“元素”类改变元素的颜色,我该怎么办?我试图做“$(“.element”).ui.draggable.css('color','blue')”,但它不起作用。另外,关于如何在恢复颜色时恢复颜色的任何提示?
    • @KabeLee 你应该这样做ui.draggable.find('.element').css('color', 'blue');。要恢复颜色,您可以使用 stop 回调
    • @T J,你拯救了我的一天!我使用“stop”的问题是,当我在里面添加这段代码“stop: function(event,ui){ ui.draggable.find('.element').css('color','black'); }” droppable(),则不能拖动元素。我想我必须把它放在错误的地方?还是我应该返回一个值?
    • @KabeLee stop 是一个可拖动的事件,而不是可拖放的事件
    • @T J,对不起。我打错了。我确实在可拖动中使用了停止,但是在我这样做之后,元素无法移动。代码如下:$(".draggable-spectra").draggable({ revert : function(event, ui) { $(this).data("uiDraggable").originalPosition = { top : 0, left : 0 }; return !event; } stop: function( event, ui ) { ui.draggable.find('.element').css('color','black'); } });
    猜你喜欢
    • 2020-08-12
    • 1970-01-01
    • 2012-02-17
    • 2013-04-22
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多