2013-07-26 2 views
1

это может смутить других, как и для меня, но мне было интересно, могу ли я использовать jquery для поиска элемента на основе уникального значения атрибута, а затем установить значение другого атрибута. В основном я пытаюсь сделать статическую страницу динамичной с помощью пользовательских атрибутов.найти элемент по атрибуту, установить другой атрибут найденного элемента

Некоторые html есть;

<div class="Sell" style="width: 47px;"><input type="checkbox" fund-id="1" id="chkSell"  class="_1"/></div> 
<div class="Buy" style="width: 47px;"><input type="checkbox" fund-id="1" id="chkBuy"  class="_1"/></div> 
<div class="BuySelllbl" style="width: 10px;"><label id="lblBuySell_1" fund-id="1">&nbsp;</label></div> 

Я поставил "фонд-ID" атрибут "1", чтобы показать, что все они связаны 1 запись, последующие записи будут 2, 3, 4 и т.д ..

I есть функция, в которой в зависимости от флажка, который установлен, я покажу S для продажи или B для покупки на этикетке выше. Моя функция выглядит так:

$("#chkSell").live('change',function(){ 
    var y = $(this).attr("class"); 
    var x = "lblBuySell" + y; 
    var fundID = $(this).attr("fund-id"); 
    //alert(fundID); 
    if(this.checked){ 
     var lbl = $("label").find("[fund-id='" + fundID + "']"); 
     alert(lbl); 
     $(lbl).html("S"); 
     //$("#" + x).html("S"); 
     $("#" + x).attr("style","color: red;"); 
    }else{ 
     $("#" + x).html("&nbsp;"); 
    } 
}); 

То, что я хочу быть в состоянии сделать это взять фонд идентификатор из флажка, найти ярлык с тем же связанным фондом идентификатором и установить только что метки .html атрибута быть «S» и чтобы быть красным, как вы можете видеть ниже. Возможно ли это, или я просто из-за моего мыслительного процесса? всякая помощь с благодарностью. Thank you, NickG

+0

Какую версию jquery вы используете? – cfs

+0

вы должны использовать атрибуты данных, тогда вы можете использовать .data jquery для их установки и $ ("label [data-fundid = '3']"), чтобы найти их – Pete

+0

vers: 1.8.3 и @Pete я могу использовать .data, чтобы установить их после того, как я успешно нашел элемент через свой пользовательский атрибут? –

ответ

1

Вы должны использовать пользовательские атрибуты стиля data-, чтобы посмотреть соответствующую метку. В этом примере каждый флажок имеет атрибуты data-fund-id и атрибуты метки данных. Когда флажок изменяется, текст элемента метки corect просматривается идентификатором-фондом и (если флажок установлен), его текст установлен на значение метки данных.

Working demo

HTML

<div class="Sell" style="width: 47px;"> 
    <input type="checkbox" data-fund-id="1" id="chkSell" data-label="S" /> 
</div> 
<div class="Buy" style="width: 47px;"> 
    <input type="checkbox" data-fund-id="1" id="chkBuy" data-label="B" /> 
</div> 

<div id="BuySelllbl" style="width: 10px;"> 
    <label id="chkSell_lbl" data-fund-id="1">&nbsp;</label> 
</div> 

JQuery

$(":checkbox").on('change', function() { 
    var that = $(this), 
     label = $("label[data-fund-id=" + that.data("fund-id") + "]"); 

    if (this.checked) { 
     label.css("color", "red").html(that.data('label')); //the font color should probably just be set in a .css file 
    } else { 
     label.empty(); 
    } 
}); 
+0

спасибо за ваше предложение, я собираюсь сделать что-то с ним и посмотреть, другая причина, по которой я не устанавливаю цвет метки через css, заключается в том, что в зависимости от этого будучи покупкой или продаю, я хочу изменить цвет, и я использую свойство класса для другой функции, иначе я бы просто установил свойство класса, чтобы отразить его. –

+0

Кроме того, прочитав свой код, я не хочу устанавливать флажки ярлык на что угодно, я хочу установить метку с тем же идентификатором фонда, что и флажок, который был нажат на значение «S» или «B» в зависимости от этого флажка.Я пытаюсь найти связанный ярлык, используя идентификатор фонда, который соответствует этой метке, и установлен флажок, а затем, после обнаружения метки с соответствующим идентификатором фонда, установите атрибуты HTML-меток на «S» или «B» соответственно –

+1

@NickG Этот код должен обновлять метку с тем же идентификатором фонда, что и флажок. Попробуйте запустить jsFiddle, с которым я связан, я думаю, это то, что вы ищете. – cfs

0

Я думаю, что я понял это, используя следующий код;

$("#chkSell").live('change',function(){ 
    var y = $(this).attr("class"); 
    var x = "lblBuySell" + y; 
    var fundID = $(this).attr("fund-id"); 
    //alert(fundID); 
    if(this.checked){ 
     $('label[fund-id="' + fundID + '"]').html("S"); 
     $('label[fund-id="' + fundID + '"]').attr("style","color: red;"); 
    }else{ 
     $("#" + x).html("&nbsp;"); 
    } 
}); 
+1

Это очень похоже на ответ, который я опубликовал, за исключением этого решения, вам нужно будет написать обработчик для каждого флажка, вместо одного обработчика для всех флажков – cfs

+0

вы правы, я смоделировал его с вашего кода, я думаю, что либо путь с вашим кодом, я должен был бы иметь атрибут идентификатора фонда правильно? Это все, что мне нужно было сделать для моего кода, я думаю, что они в конечном счете ищут и делают то же самое, хотя ваш чист. –

+0

Я также добавляю атрибут идентификатора фонда в свой ответ, я просто префикс его 'data- '. Это предпочтительный способ добавления пользовательских атрибутов в HTML5. Хотя наши ответы выполняют аналогичные действия, этот ответ касается только одного флажка «продавать», в то время как мои будут обрабатывать все флажки. В любом случае, я надеюсь, вы нашли решение, которое поможет вам. Если вы согласились, то другие, с тем же вопросом, смогут найти ответ. Удачи! – cfs

Смежные вопросы