2013-08-05 21 views
2
<ul> 
<li id="RadListBox1_i2" class="rlbItem ui-draggable"> 

    <div class="ui-draggable ui-state-default" data-shortid="1007"> 
    <em>ProductId: </em> 
    <span>110-01-070-10</span> 
    <br> 
    <em>ShortID: </em> 
    <span class="ShortID" data-shortid="1007">1007</span> 
    <br> 
    <em>Product Name: </em> 
    <span>Clearly Retro Style Colour Name Necklace</span> 
    <br> 

    <em> 
    </div> 
    </span> 
    </li> 
    <li id="RadListBox1_i3" class="rlbItem ui-draggable"> 
    <li id="RadListBox1_i4" class="rlbItem ui-draggable"> 

</ul> 

我需要.draggable('disable');如何使選擇器,找到類和數據-ID = X

建立選擇器,找到包含ID = X元素和禁用此項目有些人認爲這樣的:

發現類y其中data-shortid=X並使其

$("ul li").find(".ShortID").attr("data-shortid="+X+).draggable('disable'); 

答:

$("span.ShortID[data-shortid="+ShortId+"]").parents("li:first").draggable("disable");

+0

的可能重複的[jQuery的如何找到基於數據屬性值的元素?](http://stackoverflow.com/questions/4191386/jquery-how-to-find-an-element-based-on -a-data-attribute-value) –

+0

我需要找到基於1:Class和2:data-attribute的元素AND 3:使其可拖動(禁用)?播種不重複! –

+0

您不知道如何按屬性選擇元素,這就是其他問題所涵蓋的內容。此外,按類別選擇僅意味着組合兩個選擇器。看[存在多少個選擇器](http://api.jquery.com/category/selectors/),我們不能對每個可能的組合有任何疑問。我們必須期望人們至少知道CSS選擇器的基礎知識。 –

回答

2

你需要禁用裏,沒有跨度,所以你需要找到父:

$("span.ShortID[data-shortid=1007]").parents("li").draggable("disable"); 
+0

此代碼正常工作,但是當我替換1007到我的var ShortID(我檢查ShortID不爲空)'$(「span.ShortID [data-shortid =」+ ShortId +「]」)。parents(「li」)。draggable( 「禁用」);'它給我錯誤'錯誤:無法在初始化之前調用可拖動的方法;試圖調用方法'禁用' –

+1

當你得到這個錯誤時,ShortId的值是什麼?你確定它是可拖動的嗎? – Stobor

+1

@Vova:錯誤很明顯,不是嗎?您試圖禁用不可拖動元素的可拖動行爲。 –

1

使用此代碼:

$("ul li.ShortID[data-shortid="+X+"]").draggable('disable'); 

編輯:

var obj = $("ul li span.ShortID"); 
    var ids = obj.attr("data-shortid"); 
    if(ids == X) { 
    obj.draggable('disable'); 
    } 
+0

這似乎是好的代碼,但它不起作用。我也試過$(「ul li span.ShortID [data-shortid = 1005]」)。draggable('disable'); –

+0

但是這個工作$(「#RadListBox1_i2」)。draggable('disable');工作buti需要檢查身份證,然後使其禁用 –

+0

@VovaPotapov你想檢查什麼。你能給一些規範嗎? –

1
$(".ShortID[data-shortid=1007]") 

上面的代碼會返回帶有class =「ShortID」和屬性data-shortid =「1007」的元素

當元素被選中時,您可以使用它進行任何操作。

0
$("ul li").find(".ShortID").attr("data-shortid="+X+).draggable('disable'); 

會發現所有的元素那裏面有一個ul類,裏面有一個.ShortID類。 通過屬性和值獲取元素。你可以做

$("div[data-shortid=" + x); 

要注意的是你的榜樣,你有同一個ID的div。

http://api.jquery.com/attribute-equals-selector/

順便說一句。繼續使用find來嵌套更深層次,這將有助於提高性能。