我在MVC视图上有以下字段:
@Html.TextBoxFor(model => model.Course.Title, new { data_helptext = "Old Text" })</span>
Run Code Online (Sandbox Code Playgroud)
在单独的js文件中,我想将data-helptext属性设置为字符串值.这是我的代码:
alert($(targetField).data("helptext"));
$(targetField).data("helptext", "Testing 123");
Run Code Online (Sandbox Code Playgroud)
该alert()呼叫工作正常,它显示在警报对话框文本"古文字".但是,将data-helptext属性设置为"测试123" 的调用不起作用."旧文本"仍然是属性的当前值.
我是否错误地使用了对data()的调用?我在网上看了这个,我看不出我做错了什么.
这是HTML标记:
<input data-helptext="Old Text" id="Course_Title" name="Course.Title" type="text" value="" />
Run Code Online (Sandbox Code Playgroud) model-view-controller jquery attributes custom-data-attribute
有没有办法使用javascript(特别是jQuery)来查找基于部分属性名称的元素?
我不是在寻找任何找到这些链接中引用的部分属性值的选择器:
但还有更多的东西
<div data-api-src="some value"></div>
<div data-api-myattr="foobar"></div>
Run Code Online (Sandbox Code Playgroud)
和
$("[^data-api]").doSomething()
Run Code Online (Sandbox Code Playgroud)
查找具有以"data-api"开头的属性的任何元素.
有没有办法通过对象选择DOM元素?
例如,我希望能够将对象关联到DOM元素,如下所示:
var obj = { a: 1, b:2 };
$('a').click(function() { this.selectThing = obj });
Run Code Online (Sandbox Code Playgroud)
后来......
$.something(obj);
Run Code Online (Sandbox Code Playgroud)
甚至更好:
$('a|selectThing?=', obj);
Run Code Online (Sandbox Code Playgroud)
这样的事情.您可以看到我想要将对象与DOM元素相关联,以便我可以使用该对象获取元素.
我知道这可以用这个filter()方法来完成,我的问题是,如果有一个更优雅的方式不使用filter()这个.
编辑:
为了澄清,我希望能够使用类似选择器的对象,所以我可以做类似于此的事情$(obj)显然不起作用,但你明白了(我希望)
编辑#2:
我希望能够做到这样的事情:
var obj = { prop: 'prop' };
$('a').bindTo(obj);
$.retreive(obj) // should equal $('a')
Run Code Online (Sandbox Code Playgroud)
我不希望它以obj任何方式改变(obj应该仍然{prop: 'prop'}只是).
有没有办法选择带有前缀"my"和后缀"0-9"的jQuery的所有id.像这些$("#my $ 1-4")或者只是循环可能吗?
<div id="my1"/>
<div id="my2"/>
<div id="my3"/>
<div id="my4"/>
<div id="my5"/>
Run Code Online (Sandbox Code Playgroud) 我添加了bootstrap popovers到点击时打开的日历事件:
eventClick: (event, jsEvent, view) ->
if event.ajaxUrl?
elem = jQuery(@)
elem.popover('destroy')
jQuery.ajax({url: event.ajaxUrl})
.done (result) ->
elem.popover(
placement: 'top'
html: true
trigger: 'manual'
title: moment(event.start).format('dddd, DD. MMMM YYYY - HH:mm')
content: result
container: 'body')
elem.popover('show')
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我更改日历视图时,这些弹出窗口保持打开状态(例如,更改月份或周/日布局).由于弹出窗口绑定到.fc-event日历中的div/span ,我需要访问这些DOM元素才能运行.popover('destroy').
每当更改fullCalendar视图时,旧的DOM-Elements将替换为新视图的那些,因此我必须在实际更改视图之前访问它们.不幸的是,只有事件加载的回调(loading在视图改变后发生)和viewDisplay(同样,但你得到新的视图).
为了确保我理解viewDisplay正确,我在日历中添加了一个小测试,总是给我"0"(数据选择器来自jquery数据选择器)
viewDisplay: (view) ->
alert(jQuery('.fc-event:data(popover)').size())
Run Code Online (Sandbox Code Playgroud)
是否有办法在每次更改视图时挂钩日历过程 - 但在视图实际更改之前?
编辑
现在,我只是在鼠标移动到任何日历按钮上时(只是click在视图更改后执行绑定),只是销毁弹出窗口,但此解决方案只是一种解决方法
jQuery('.fc-button').on 'mouseover', () ->
jQuery('.fc-event:data(popover)').popover('destroy')
Run Code Online (Sandbox Code Playgroud) 通常当我有一个div时,我使用id属性来唯一地标识一个元素.
例如:
<div id="F123" class="sidebar-item">
My first item goes here
</div>
Run Code Online (Sandbox Code Playgroud)
现在,我的div元素需要一个双'key':'slug'属性和'category'属性.
例如:
<div slug="my-first-item" category="techno" class="sidebar-item">
My first item goes here
</div>
Run Code Online (Sandbox Code Playgroud)
编译器警告我这些属性无效.在div上使用双键的最佳方法是什么?我很确定有各种方法可以继续,但我对最好的方式感到好奇吗?
我正在使用Twitter Bootstrap来创建工具提示.目前,我初始化工具提示$(document).ready():
$(document).ready(function() {
$('[data-toggle="tooltip"]').tooltip();
});
Run Code Online (Sandbox Code Playgroud)
这tooltip()为具有该data-toggle元素的每个元素调用(在监听器中).
问题是如果我有动态DOM元素(使用Ajax),tooltip()就不会调用它们.我想到了以下解决方案:
$(document).ready(function() {
$('body').on('ready', '[data-toggle="tooltip"]', function() {
$(this).tooltip();
});
});
Run Code Online (Sandbox Code Playgroud)
但这不起作用..
有任何想法吗..?
所以我想检查是否有任何li元素具有"data-foo"属性且其值为"bar".
这会有用吗?:
if ($('li[data-foo=bar]'))
{
//exists
}
else
{
//does not exist
}
Run Code Online (Sandbox Code Playgroud)
谢谢
可能重复:
jquery数据选择器
我有几个带有'connection_name'类的元素.这些元素中的每一个都使用data()JQuery函数绑定到它的唯一id.我正在尝试查询找到具有给定id的元素,但我似乎无法让它工作.
为了这个测试,我创建了一个只有1个元素的页面,并设置了元素的id.
我可以验证是否正在设置id,因为当我在控制台中查询元素时,它会显示返回的id:
$('.connection_name').data()
Object
id: "4fea76bd99ea080d19000002"
__proto__: Object
Run Code Online (Sandbox Code Playgroud)
我已经在其他任务/帖子上看到元素应该由$('selector [data-attribute = value]')选择,但这似乎不起作用:
$('.connection_name[data-id="4fea76bd99ea080d19000002"]')
[]
Run Code Online (Sandbox Code Playgroud)
更糟糕的是,即使我尝试选择它没有任何价值(仅仅通过属性),我仍然没有返回任何东西:
$('.connection_name[data-id]')
[]
Run Code Online (Sandbox Code Playgroud)
我不确定问题是什么,或者如何去做.